| 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. | |