Registriert seit: 7. Feb 2006
429 Beiträge
|
ominöse "not in edit mode"-meldung
23. Feb 2006, 23:14
Datenbank: interbase 6.5 • Zugriff über: ibx, ibexpert
Hi,
bin hier grad am Verzweifeln.
Ich will Daten von einer Datenbank in eine andere konvertieren (ich weiß, das hatten wir schonmal; musste aber meine Datenbankstruktur nochmal ändern).
Ich hab echt schon alles mögliche ausprobiert, zuerst mit TIBTable-Komponenten, dann dacht ich mir, weil ich beim letzten Mal, als es noch funktioniert hatte, TIBDataSets verwendet hatte, versuch ich das nochmal, aber nein.
Mit diesem Code-Snippet versuche ich was in meine Datenbank einzufügen:
Delphi-Quellcode:
function THauptFormular.ConvertAUT: Boolean;
var
successful: Boolean;
begin
successful := false;
Try
DatenModul.Table_AUT.Active := true;
DatenModul.Table_AUT.First();
while not DatenModul.Table_AUT.Eof do
begin
DatenModul.IBDataSet_AUT.Open();
DatenModul.IBDataSet_AUT.Insert();
DatenModul.IBDataSet_AUTAUT.AsString := DatenModul.Table_AUTAUT.AsString; //hier kommt die Meldung der Error "not in edit mode"
DatenModul.IBDataSet_AUTVF.AsString := DatenModul.Table_AUTVF.AsString;
DatenModul.IBDataSet_AUTFUNKTION.AsString := DatenModul.Table_AUTFUNKTION.AsString;
DatenModul.IBDataSet_AUTFIRMA1.AsString := DatenModul.Table_AUTFIRMA1.AsString;
DatenModul.IBDataSet_AUTFIRMA2.AsString := DatenModul.Table_AUTFIRMA2.AsString;
DatenModul.IBDataSet_AUTSTRASSE.AsString := DatenModul.Table_AUTSTRASSE.AsString;
DatenModul.IBDataSet_AUTPLZ.AsString := DatenModul.Table_AUTPLZ.AsString;
DatenModul.IBDataSet_AUTORT.AsString := DatenModul.Table_AUTORT.AsString;
DatenModul.IBDataSet_AUTLAND.AsString := DatenModul.Table_AUTLAND.AsString;
DatenModul.IBDataSet_AUTTEL.AsString := DatenModul.Table_AUTTEL.AsString;
DatenModul.IBDataSet_AUTTELPRIV.AsString := DatenModul.Table_AUTTELPRIV.AsString;
DatenModul.IBDataSet_AUTFAX.AsString := DatenModul.Table_AUTFAX.AsString;
DatenModul.IBDataSet_AUTANM.AsString := DatenModul.Table_AUTANM.AsString;
DatenModul.IBDataSet_AUTDATUM.AsDateTime := DatenModul.Table_AUTDATUM.AsDateTime;
DatenModul.IBDataSet_AUTTYP.AsString := DatenModul.Table_AUTTYP.AsString;
DatenModul.IBDataSet_AUT.Post();
DatenModul.IBDataSet_AUT.Next();
DatenModul.IBDataSet_AUT.Close();
end;
successful := true;
Except
on E : Exception do
ShowMessage(E.ClassName+' -Fehler aufgetreten in ConvertAUT mit Nachricht: '+E. Message);
end;
if successful then
ConvertAUT := true
else
ConvertAUT := false;
DatenModul.Table_AUT.Close();
DatenModul.IBDataSet_AUT.Close();
end;
Ich habe echt schon alles ausprobiert. Auch ein einfügen von DatenModul.IBDataSet_AUT.Edit() bringt nichts. Ich raff's nicht. Ihr vielleicht?
Danke,
Martin
Die Definition meiner Dataset-Komponente ist folgende:
Code:
object IBDataSet_AUT: TIBDataSet
Database = IBDatabase1
Transaction = IBTransaction
BeforeInsert = IBDataSet_AUTBeforeInsert
DeleteSQL.Strings = (
'delete from AUT'
'where'
' ID = :OLD_ID')
InsertSQL.Strings = (
'insert into AUT'
' (ID, AUT, VF, FUNKTION, FIRMA1, FIRMA2, STRASSE, PLZ, ORT, LAN' +
'D, TEL, '
' TELPRIV, FAX, ANM, DATUM, TYP)'
'values'
' (:ID, :AUT, :VF, :FUNKTION, :FIRMA1, :FIRMA2, :STRASSE, :PLZ, ' +
':ORT, :LAND, '
' :TEL, :TELPRIV, :FAX, :ANM, :DATUM, :TYP)')
RefreshSQL.Strings = (
'Select '
' ID,'
' AUT,'
' VF,'
' FUNKTION,'
' FIRMA1,'
' FIRMA2,'
' STRASSE,'
' PLZ,'
' ORT,'
' LAND,'
' TEL,'
' TELPRIV,'
' FAX,'
' ANM,'
' DATUM,'
' TYP'
'from AUT '
'where'
' ID = :ID')
SelectSQL.Strings = (
'select * from AUT')
ModifySQL.Strings = (
'update AUT'
'set'
' ID = :ID,'
' AUT = :AUT,'
' VF = :VF,'
' FUNKTION = :FUNKTION,'
' FIRMA1 = :FIRMA1,'
' FIRMA2 = :FIRMA2,'
' STRASSE = :STRASSE,'
' PLZ = :PLZ,'
' ORT = :ORT,'
' LAND = :LAND,'
' TEL = :TEL,'
' TELPRIV = :TELPRIV,'
' FAX = :FAX,'
' ANM = :ANM,'
' DATUM = :DATUM,'
' TYP = :TYP'
'where'
' ID = :OLD_ID')
Left = 312
Top = 448
object IBDataSet_AUTID: TIntegerField
FieldName = 'ID'
Origin = '"AUT"."ID"'
ProviderFlags = [pfInUpdate, pfInWhere, pfInKey]
Required = True
end
object IBDataSet_AUTAUT: TIBStringField
FieldName = 'AUT'
Origin = '"AUT"."AUT"'
FixedChar = True
Size = 30
end
object IBDataSet_AUTVF: TIBStringField
FieldName = 'VF'
Origin = '"AUT"."VF"'
FixedChar = True
Size = 150
end
object IBDataSet_AUTFUNKTION: TIBStringField
FieldName = 'FUNKTION'
Origin = '"AUT"."FUNKTION"'
FixedChar = True
Size = 150
end
object IBDataSet_AUTFIRMA1: TIBStringField
FieldName = 'FIRMA1'
Origin = '"AUT"."FIRMA1"'
FixedChar = True
Size = 150
end
object IBDataSet_AUTFIRMA2: TIBStringField
FieldName = 'FIRMA2'
Origin = '"AUT"."FIRMA2"'
FixedChar = True
Size = 150
end
object IBDataSet_AUTSTRASSE: TIBStringField
FieldName = 'STRASSE'
Origin = '"AUT"."STRASSE"'
FixedChar = True
Size = 120
end
object IBDataSet_AUTPLZ: TIBStringField
FieldName = 'PLZ'
Origin = '"AUT"."PLZ"'
FixedChar = True
Size = 30
end
object IBDataSet_AUTORT: TIBStringField
FieldName = 'ORT'
Origin = '"AUT"."ORT"'
FixedChar = True
Size = 120
end
object IBDataSet_AUTLAND: TIBStringField
FieldName = 'LAND'
Origin = '"AUT"."LAND"'
FixedChar = True
Size = 60
end
object IBDataSet_AUTTEL: TIBStringField
FieldName = 'TEL'
Origin = '"AUT"."TEL"'
FixedChar = True
Size = 60
end
object IBDataSet_AUTTELPRIV: TIBStringField
FieldName = 'TELPRIV'
Origin = '"AUT"."TELPRIV"'
FixedChar = True
Size = 60
end
object IBDataSet_AUTFAX: TIBStringField
FieldName = 'FAX'
Origin = '"AUT"."FAX"'
FixedChar = True
Size = 60
end
object IBDataSet_AUTANM: TIBStringField
FieldName = 'ANM'
Origin = '"AUT"."ANM"'
FixedChar = True
Size = 240
end
object IBDataSet_AUTDATUM: TDateField
FieldName = 'DATUM'
Origin = '"AUT"."DATUM"'
end
object IBDataSet_AUTTYP: TIBStringField
FieldName = 'TYP'
Origin = '"AUT"."TYP"'
FixedChar = True
Size = 3
end
end
[edit=MrSpock]Code Tags gesetzt. Mfg, MrSpock[/edit]
Um Rekursion zu verstehen, muss man zunächst Rekursion verstehen.
|