Also ich habe das ganze nun auf Script umgestellt aber das gleiche Problem. Muss ich dabei alle anderen
Query und tables abmelden Close machen ?
Ja ich denke mit einer extra function kann ich im Fall eines Updates einfach ein Prüfscript mitgeben und dann wird die Datenbank aktuell ...
Ich kann aber das script auch genauso in der Console ausführen und es geht ... ich verstehe das nicht.
Script oder
query kein unterschied ...
Jetzt kommt
20:30:46 |
[Application: Test]
: [Start transaction]
20:30:46 |
[Application: Test]
: [Execute] alter table TEST add FELD4 Integer
20:30:46 |
[Application: Test]
[Error] -607 335544351 unsuccessful metadata update
STORE RDB$RELATION_FIELDS failed
20:30:46 |
[Application: Test]
: [Rollback]
Delphi-Quellcode:
Function tsqldbform.Checkdatab_field(Tabelle:TIBQuery;Tabname:
String;Feldname:
String;feldtyp:
String;Feldsize:integer;notwendig:Boolean):Boolean;
var _feldtyp :tfieldtype;
sqlbastel :
String;
Begin
// schauen ob das Datenfeld existiert
if Tabelle.FindField(Feldname)=nil
then
begin
// Showmessage('Feld nicht vorhanden !');
showmessage('
Datenbank Feld:'+Feldname + '
nicht vorhanden ! / Wird erzeugt ! ');
sqlbastel := '
alter table ' + Trim(Tabname) + '
add ' + Trim(Feldname) + '
' + Trim(Feldtyp) +'
;';
ibscript1.Script.Text := sqlbastel;
// Tabelle.SQL.add(sqlbastel);
ibscript1.ExecuteScript;
// Open ; // ExecSQL; // SQL.BeginUpdate;
// ibscript1.Script.Clear; // SQL.Clear;
ibmaintransaction.CommitRetaining;
showmessage(ibscript1.script.text );
end;
end;
warum kann das Script was ja richtig ankommt nicht ausgeführt werden ?
das muss irgend einen Grund haben.