Bonjour,
Soit j'ai mal configuré ma connexion FireDac, ma transaction (autocommit) ou quelque chose d'autre mais il y a quelque chose qui m'échappe.
J'ai voulu utiliser une petite base SQLite pour stocker une table temporaire.
dans mon programme si la table n'existe pas, je la crée (via un FDScript) puis je la remplie.
<< jusque là, pas de problème
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 FDTable.Open; puis une boucle avec FDTable.Append; initialisation des colonnes; et FDTable.Post;
comme on peut demander plusieurs fois le traitement les cumuls de la table doivent être remis à zéro
pour cela, après un close de la FDTable (donc logiquement il n'y a plus de transaction en cours)
j'utilise le ExecSQL de la connexion FDConnection.ExecSQL('UPDATE LATABLE SET CUMUL=0',false);Mais là,
or, je ne vois pas pourquoi, sans parler que je ne sais pas déverrouiller cette dernière (sauf à passer par une suppression physique de la base)[FireDAC][Phys][SQLite] ERROR: database is locked.
j'ai bien sûr plusieurs contournements possibles allant de l'utilisation d'une G.T.T de Firebird (et donc Firebird plutôt que SQLite) à une simple bloc
mais j'aimerais comprendre pourquoi le ExecSQL ne fonctionne pas ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part table1.first;while not table.eof do table.edit; Tablecumul=0; table.post; table.nextnext; end;
Partager