Einzelnen Beitrag anzeigen

sancho1980

Registriert seit: 7. Feb 2006
429 Beiträge
 
#1

ominöse "not in edit mode"-meldung

  Alt 23. Feb 2006, 22: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.
  Mit Zitat antworten Zitat