IBdataset edit, delete, update :help:
Salut à tous, je travaille sur un TFBDataSet qui est en fait la même chose qu'un IBDataset, mais qui est compatible avec la suite de composants UIB.
Alors mon problème est que je charge des tables aléatoires, et ne peut donc pas fixer de manière statiques les propriétés insertSQL, editSQL etc... J'ai donc mis ce bout de code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
FBDataset.SQLDelete.Clear;
FBDataset.sqlEdit.Clear;
FBDataset.SQLInsert.clear;
FBDataset.SQLRefresh.Text := 'SELECT * FROM ' + trim(cmbtables.Text);
FBDataset.SQLSelect.text:='SELECT * FROM ' + trim(cmbtables.Text);
FBDataset.active:=true;
for i := 0 to FBDataset.Fields.Count - 1 do
begin
if not isnumeric(fbdataset.Fields.fields[i].DisplayName) then
begin
if length(fields)>0 then
begin
fields:=fields + ', :' + fbdataset.Fields.fields[i].DisplayName ;
fieldsud:=fieldsud + ' AND (' + fbdataset.Fields.fields[i].DisplayName + '= :' + fbdataset.Fields.fields[i].DisplayName+ ')';
end
else
begin
fields:=fields + ':' + fbdataset.Fields.fields[i].DisplayName;
fieldsud:=fieldsud + '(' + fbdataset.Fields.fields[i].DisplayName + '= :' + fbdataset.Fields.fields[i].DisplayName+')';
end;
end;
end;
FBDataset.SQLDelete.Text:='DELETE FROM ' + trim(cmbtables.Text) + ' WHERE ' + fieldsud + ';';
FBDataset.sqlEdit.Text:='UPDATE ' + trim(cmbtables.Text) + ' SET ' + ansireplacetext(fieldsud,' AND ', ', ') + ';';
FBDataset.sqlEdit.Text:=ansireplacetext(ansireplacetext(FBDataset.sqlEdit.Text,')',''),'(','');
FBDataset.SQLInsert.Text:='INSERT INTO ' + trim(cmbtables.Text) + '(' + ansireplacetext(fields,':', '') + ') VALUES (' + fields + ');';
showmessage(FBDataset.SQLDelete.Text);
showmessage(FBDataset.sqlEdit.Text);
showmessage(FBDataset.SQLInsert.Text);
end; |
Les syntaxes SQL ont l'air bonne, seulement j'ai plein de soucis: Lorsque je fais un insert, je récupère l'enregistrement d'une autre ligne, la pluspart des edit plantent .... Ai-je oublié quelque chose? Faut-il spécifier soit même les valeurs rentrées dans les champs avec parambyname ? Si oui comment ?
PS: J'utilise un DBNavigator pour insérer les champs.
Merci d'avance !