AppleScript et Valentina

PRESENTATION , INFOS

Valentina est un gestionnaire de base de données ultra rapide, le tout accessible via AppleScript, Réalbasic, ou directement en C++.
 
Logiciels similaires : aucun (si vous en connaissez un, merci de me le signaler)

Liens : www.paradigmasoft.com

Supprimer une fiche par SQL

Lorsqu'on effectue une recherche en SQL, genre :
global T_STTiers
tell application "Valentina"
set Base to open "Disque dur:Compta.vdb" with hide gui
tell Base
set T_STTiers to SQL Select "select CNomTiers, CTelFaxTiers, CAdresse1Tiers, CAdresse2Tiers, CCPTiers, CVilleTiers from TTiers where CNomTiers like \\A" & JeVeux &" no_case order by CNomTiers"
end tell
end tell
le résultat se retrouve dans un ' cursor' nommé ici T_STTiers. Pour pouvoir utiliser ce cursor, il faut au préalable le définir comme une variable globale.
Les id unique des fiches sont renumérotés, ainsi la fiche 10 d'un cursor ne correspond pas à la fiche 10 de la base mais à la 10ème fiche du cursor.
Ainsi pour supprimer de la base cette dixième fiche de T_STTiers, il faut tout d'abord la retrouver dans la base, puis la supprimer ensuite. Ce qui nous donne :
tell application "Valentina"
set TableEnCours to base object "TTiers" of Base
get record 10 of T_STTiers
get current record of TableEnCours
delete result
delete T_STTiers
end tell
 

01/03/2000 :

Désormais on peut supprimer directement une fiche en SQL suivant la structure suivante:
-- Utiliser le fenêtre de l'historique des évènements pour suivre les résultats
--
on DeleteRecords(DB)
tell application "Valentina"
set Customer to base object "Customer" of DB
get count of records in Customer -- see in the EventWindow how much records are now ?
get count of records in base object "Invoice" of DB
set theCursor to SQL DB Select "SELECT * FROM Customer ORDER BY name DESC"
set theCount to count of records in theCursor
-- Delete half of records
repeat with i from 1 to theCount div 2
-- While Curosr remove deleted record we each time
-- stay on the first record and delete it.
delete record 1 of theCursor
end repeat
get
count of records in Customer -- see how much records are left ?
get count of records in base object "Invoice" of DB delete theCursor -- free memory
end tell
end DeleteRecords
En résumé, il faut primo rechercher les fiches que l'on veut supprimer puis, secondo supprimer toutes les fiches du curseur (résultat de la recherche) en supprimant par la première fiche en bouclant sur le nombre de fiches du curseur.