Announcement

Collapse
No announcement yet.

Neuer Datensatz

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Neuer Datensatz

    Hi,
    Die Probleme reißen nicht ab

    Beim Erzeugen eines neuen Datensatzes mit Relation verbundenen Tabellen tritt beim speichern
    folgender Fehler auf

    Fehler-Meldung: Ausführung misslungen, Validation error für column FI_STAMM_ID,
    value "***null***" aufgetreten.

    Das Feld FI_STAMM_ID soll später über eine Combobox gefüllt werden aber zuerst nur mit 0.
    Testweise habe ich mit 156 vorbelegt(ID in verbundener Tabelle), aber gleicher Fehler.

    Für einen Tip wäre ich sehr dankbar.

    Gruß Rudolf Terppe

    cmdSEL1.CommandText := 'SELECT a.ID, a.BEZ, a.USERS, a.LOGIN, a.FI_STAMM_ID, '+
    ' b.ID, b.BEZ FROM FI_STAMM_U a, FI_STAMM b WHERE '+
    'a.FI_STAMM_ID = b.ID' ;

    // INSERT-Anweisung
    cmdINS := BdpCommand.Create;
    cmdINS.CommandType := CommandType.Text;
    cmdINS.CommandText := 'INSERT INTO FI_STAMM_U ('+
    'ID ,'+
    'BEZ ,'+
    'USERS ,'+
    'LOGIN ,'+
    'FI_STAMM_ID ,'+
    'INFO ,'+
    'DTNAME ,'+
    'ENGNAME ,'+
    'MEMO ,'+
    'GUELTIG '+
    ')VALUES('+
    ' ? ,'+
    ' ? ,'+
    ' ? ,'+
    ' ? ,'+
    ' ? ,'+
    ' ? ,'+
    ' ? ,'+
    ' ? ,'+
    ' ? ,'+
    ' ? )';
    cmdINS.Connection := Fcon;
    cmdINS.Parameters.Add(BdpParameter.Create('@p1',Bd pType.Int32, 0, 'ID'));
    cmdINS.Parameters.Add(BdpParameter.Create('@p2',Bd pType.&String, 100, 'BEZ'));
    cmdINS.Parameters.Add(BdpParameter.Create('@p3',Bd pType.&String, 8, 'USERS'));
    cmdINS.Parameters.Add(BdpParameter.Create('@p4',Bd pType.DateTime, 0, 'LOGIN'));
    cmdINS.Parameters.Add(BdpParameter.Create('@p5',Bd pType.Int32, 0 , 'STAMM_ID'));
    cmdINS.Parameters.Add(BdpParameter.Create('@p6',Bd pType.&String, 100, 'INFO'));
    cmdINS.Parameters.Add(BdpParameter.Create('@p7',Bd pType.&String, 100, 'DTNAME'));
    cmdINS.Parameters.Add(BdpParameter.Create('@p8',Bd pType.&String, 100, 'ENGNAME'));
    cmdINS.Parameters.Add(BdpParameter.Create('@p9',Bd pType.Blob, 80, 'MEMO'));
    cmdINS.Parameters.Add(BdpParameter.Create('@p10',B dpType.&String, 1, 'GUELTIG'));
    Fdad1.InsertCommand := cmdINS;

    Dann beim Neuanlegen eines Datensatzes
    procedure frmTFI_STAMM_U.Neu;
    var frmMain: frmTMain;
    b: TFI_STAMM_U;
    iRow: Integer;
    begin

    b := TFI_STAMM_U.Create;
    frmMain := frmTMain.Create;
    StatusBar.Text := 'Neuer Datensatz !';

    FcurMan.EndCurrentEdit; //Bindung lösen
    FcurMan.SuspendBinding;
    edtID.Clear;
    edtBEZ.Clear;
    edtUSERS.Clear;
    edtLOGIN.Clear;
    edtFI_STAMM_ID.Clear;

    b.neue_ID;

    Fdrv := Fdv.AddNew; //DataRowView
    Fdrv.BeginEdit; //vorbelegen
    Fdrv['ID'] := b.ID;
    Fdrv['BEZ'] := '*';
    Fdrv['USERS'] := frmMain.userApp;
    Fdrv['LOGIN'] := TDateTime.Now;
    Fdrv['FI_STAMM_ID'] := 156;
    Fdrv.EndEdit;

    FcurMan.CancelCurrentEdit; // Bindung wieder herstellen
    FcurMan.ResumeBinding;

    Fdv.Sort := 'ID';
    iRow := Fdv.Find(b.ID);
    DataGrid.CurrentRowIndex := iRow; //Zeile vorn markieren
    DataGrid.Select(iRow); //Zeile ganz markieren
    RefreshStatusBar(sender, e);
    frmMain.mmTrue; //Mainmenü, ToolButtons, frmVb-cm-ContextMenü
    frmMain.Free;
    b.Free;
    end;

  • #2
    mal mit nem autowert probiert. in vs2005 gibts die fehlermeldung "bringen sie logik in ihre datenbank" oder so ähnlich ;-). das hört sich nicht grad nach ner gesunden db struktur an

    mfg

    bendik

    Comment

    Working...
    X