J'essaye d'implémenter la fonctionnalité TSQLite3DataSet au programme Lazarus. Pour donner un MCVE est ici une table SQLite de base de données test.db
:Comment faire pour appliquer des mises à jour à TSQLite3DataSet dans Lazarus
CREATE TABLE "ttest" (
"ID" INTEGER PRIMARY KEY AUTOINCREMENT,
"Data" INTEGER)
Pour mettre en œuvre l'instance TSQLite3Dataset
je l'ai fait:
object Sqlite3Dataset1: TSqlite3Dataset
FileName = 'C:\Users\User\Desktop\SQLIte\test.db'
PrimaryKey = 'ID'
TableName = 'ttest'
end
Il fonctionne très bien sauvegarder les données mises à jour et en annexe. Par exemple en utilisant ce code:
procedure TForm1.Button3Click(Sender: TObject);
begin
if Sqlite3Dataset1.State in [dsEdit, dsInsert] then
Sqlite3Dataset1.Post;
Sqlite3Dataset1.ApplyUpdates;
Sqlite3Dataset1.RefetchData;
end;
Mais si je cède la vraie table vide à l'instance de classe:
CREATE TABLE "base" (
"ID" INTEGER PRIMARY KEY AUTOINCREMENT,
"Code" varchar NOT NULL,
"GCode" varchar DEFAULT NULL,
"Fam" varchar DEFAULT NULL,
"Name" varchar DEFAULT NULL,
"Patr" varchar DEFAULT NULL,
"Age" smallint DEFAULT NULL,
"Gender" smallint DEFAULT NULL,
"Invalid" smallint DEFAULT NULL,
"AdmDate" date DEFAULT NULL,
"Departament" smallint DEFAULT NULL,
"DsAdm" varchar DEFAULT NULL,
"DsClin" varchar DEFAULT NULL,
"Surgery" varchar DEFAULT NULL,
"ConditAdmission" smallint DEFAULT NULL,
"DiagnRemarks" varchar DEFAULT NULL,
"DiagnDuration" float DEFAULT NULL,
"TrMethod" smallint DEFAULT NULL,
"TreatDetails" varchar DEFAULT NULL,
"DiseaseDuration" float DEFAULT NULL,
"Acute" smallint DEFAULT NULL,
"Course" varchar DEFAULT NULL,
"Outcomes" smallint DEFAULT NULL,
"GBA" smallint DEFAULT NULL,
"GUA" smallint DEFAULT NULL,
"Coag" smallint DEFAULT NULL,
"PTI" smallint DEFAULT NULL,
"Group" smallint DEFAULT NULL,
"Stool" smallint DEFAULT NULL,
"BCA" smallint DEFAULT NULL,
"GP" smallint DEFAULT NULL,
"Alb" smallint DEFAULT NULL,
"Glob" smallint DEFAULT NULL,
"Bil" smallint DEFAULT NULL,
"BilCon" smallint DEFAULT NULL,
"NonConBil" smallint DEFAULT NULL,
"Chol" smallint DEFAULT NULL,
"AST" smallint DEFAULT NULL,
"ALT" smallint DEFAULT NULL,
"AmilBl" smallint DEFAULT NULL,
"AmilUr" smallint DEFAULT NULL,
"DUr" smallint DEFAULT NULL,
"Carbamide" smallint DEFAULT NULL,
"Crea" smallint DEFAULT NULL,
"Tim" smallint DEFAULT NULL,
"Glu" smallint DEFAULT NULL,
"RW" smallint DEFAULT NULL,
"HBS" smallint DEFAULT NULL,
"X-Ray" smallint DEFAULT NULL,
"FGDS" smallint DEFAULT NULL,
"ECG" smallint DEFAULT NULL,
"Use" smallint DEFAULT NULL,
"PeptUlcerGastr" smallint DEFAULT NULL,
"PeptUlcerDuod" smallint DEFAULT NULL,
"AcUlcer" smallint DEFAULT NULL,
"Loc1" varchar DEFAULT NULL,
"Loc2" varchar DEFAULT NULL,
"Compl1" varchar DEFAULT NULL,
"Compl2" varchar DEFAULT NULL,
"Operation1" varchar DEFAULT NULL,
"Operation2" varchar DEFAULT NULL,
"ManipName" varchar DEFAULT NULL,
"Manipulation" varchar DEFAULT NULL,
"Coexist1" varchar DEFAULT NULL,
"Coexist2" varchar DEFAULT NULL,
"Coexist3" varchar DEFAULT NULL,
"Coname" varchar DEFAULT NULL,
"Coexisting" varchar DEFAULT NULL,
"Cholecyst" smallint DEFAULT NULL,
"Pancreatitis" smallint DEFAULT NULL,
"GIB" smallint DEFAULT NULL,
"Bulbitis" smallint DEFAULT NULL,
"Hepatitis" smallint DEFAULT NULL,
"Scar" smallint DEFAULT NULL,
"Gastritis" smallint DEFAULT NULL,
"Additional" smallint DEFAULT NULL,
"NameofAddit" varchar DEFAULT NULL,
"OtherName" smallint DEFAULT NULL,
"Other" varchar DEFAULT NULL,
"SocState" smallint DEFAULT NULL,
"Occupation" varchar DEFAULT NULL,
"Hazards" smallint DEFAULT NULL,
"HazardsOther" varchar DEFAULT NULL,
"SatisfGen" smallint DEFAULT NULL,
"SatisfMoral" smallint DEFAULT NULL,
"SatisfMater" smallint DEFAULT NULL,
"UseNutrit" float DEFAULT NULL,
"UseClothes" float DEFAULT NULL,
"UseCulture" float DEFAULT NULL,
"UseTreat" float DEFAULT NULL,
"UseSport" float DEFAULT NULL,
"FamCond" smallint DEFAULT NULL,
"FamRelat" smallint DEFAULT NULL,
"FamScand" smallint DEFAULT NULL,
"FamScandReas" smallint DEFAULT NULL,
"Stress" smallint DEFAULT NULL,
"RelativesCount" smallint DEFAULT NULL,
"RelativesPersons" varchar DEFAULT NULL,
"Drugs" smallint DEFAULT NULL,
"DrugsDetails" varchar DEFAULT NULL,
"DietSubj" smallint DEFAULT NULL,
"DietPlace" smallint DEFAULT NULL,
"DietPlaceOther" varchar DEFAULT NULL,
"DietDry" smallint DEFAULT NULL,
"DietRegular" smallint DEFAULT NULL,
"DietFreq" float DEFAULT NULL,
"DietChew" smallint DEFAULT NULL,
"DietObj" smallint DEFAULT NULL,
"AlcoholFam" smallint DEFAULT NULL,
"AlcoholSelf" smallint DEFAULT NULL,
"AlcoholObj" smallint DEFAULT NULL,
"AlcoholBeginAge" float DEFAULT NULL,
"AlcoholBeforeYears" float DEFAULT NULL,
"SmokeBeginAge" smallint DEFAULT NULL,
"SmokeTotalYears" smallint DEFAULT NULL,
"Smokes" smallint DEFAULT NULL,
"SmokesCigarettes" smallint DEFAULT NULL,
"ProphylPurp" smallint DEFAULT NULL,
"Recommend" smallint DEFAULT NULL,
"AcuteFreq" smallint DEFAULT NULL,
"ReasontoCome" varchar DEFAULT NULL,
"AddonA1" varchar DEFAULT NULL,
"AddonS1" smallint DEFAULT NULL,
"ExaminationOtherCount" smallint DEFAULT NULL,
"ExaminationOtherName" varchar DEFAULT NULL,
"Complications" varchar DEFAULT NULL,
"AddonA2" varchar DEFAULT NULL,
"AddonA3" varchar DEFAULT NULL,
"Surgery1" varchar DEFAULT NULL,
"Surgery2" varchar DEFAULT NULL,
"Fio" varchar DEFAULT NULL,
"Perf" smallint DEFAULT NULL,
"Penetr" smallint DEFAULT NULL,
"Malign" smallint DEFAULT NULL,
"SmokesSigarettesNumber" float DEFAULT NULL,
"Stenosis" tinyint DEFAULT NULL,
"FamScandReas0" tinyint DEFAULT NULL,
"FamScandReas1" tinyint DEFAULT NULL,
"FamScandReas2" tinyint DEFAULT NULL,
"FamScandReas3" tinyint DEFAULT NULL,
"FamScandReas4" tinyint DEFAULT NULL,
"FamScandReas5" tinyint DEFAULT NULL,
"FamScandReas6" tinyint DEFAULT NULL,
"Drugs0" tinyint DEFAULT NULL,
"Drugs1" tinyint DEFAULT NULL,
"Drugs2" tinyint DEFAULT NULL,
"Drugs3" tinyint DEFAULT NULL,
"Drugs4" tinyint DEFAULT NULL,
"PeptUlcerUnknown" smallint DEFAULT NULL)
Rien ne se fait après que je l'appelle ApplyUpdates
. Les modifications ne sont pas enregistrées dans la base de données: elles ne sont ni mises à jour ni ajoutées.
Je suis bloqué par le problème. Est-ce que quelqu'un sait un moyen de faire face à cela?