![]() |
Datenbank: Interbase • Version: 7.5 • Zugriff über: ADO
Update einer Interbase Datenbank funktioniert nicht
Hallo,
ich habe nun schon seit knapp 2 Tagen ein Problem was ich nicht zu loesen schaffe. Ich will aus einer simpelen Interbase Datenbank etwas aktuallisieren und es klappt nicht. Das Select funktioniert so:
Delphi-Quellcode:
aber das UPDATEN klappt nicht...hab das so ausprobiert:
s_sql := 'SELECT ID, VORNAME, NACHNAME, KUERZEL, ADMINISTRATOR FROM MITARBEITER WHERE KUERZEL = '+''''+Environment.UserName+'''';
cmd := BdpCommand.Create(s_sql, DBConnection2); DBConnection2.Open; trsa := DBConnection2.BeginTransaction; datred := cmd.ExecuteReader; while datred.read do begin lbl_id.Text := datred['ID'].ToString; lbl_vorname.Text := datred['VORNAME'].ToString; lbl_nachname.Text := datred['NACHNAME'].ToString; lbl_kuerzel.Text := datred['KUERZEL'].ToString; lbl_admin.Text := datred['ADMINISTRATOR'].ToString; end; datred.Close; trsa.Commit; datred.Free; DBConnection2.Close;
Delphi-Quellcode:
Die Vars sind so deklariert:
s_sql :='UPDATE MITARBEITER SET '+
'ID = '+txt_id.Text+', '+ 'VORNAME = '+txt_vorname.Text+', '+ 'NACHNAME = '+txt_nachname.Text+', '+ 'KUERZEL = '+txt_kuerzel.Text+', '+ 'ADMINISTRATOR = '+txt_admin.Text+' '+ 'WHERE KUERZEL = '+Environment.UserName; cmd := BdpCommand.Create(s_sql, DBConnection2); DBConnection2.Open; trsa := DBConnection2.BeginTransaction; cmd.Transaction:=trsa; trsa.Commit; DBConnection2.Close; cmd.Free
Delphi-Quellcode:
ich hoffe mir kann jemand helfen!
s_sql: string;
cmd: BdpCommand; trsa: BdpTransaction; datred: BdpDataReader; |
Re: Update einer Interbase Datenbank funktioniert nicht
Hallo,
greife dir den Inhalt von s_sql ab und führe das Statement mal extern aus, dann erfährst du ganz sicher woran es hapert. Grüße vom marabu |
Re: Update einer Interbase Datenbank funktioniert nicht
Stringfelder müßen gequoted werden oder du verwendest Parameter.
|
Re: Update einer Interbase Datenbank funktioniert nicht
Hallo Deadmatt
Du weist zwar dem cmd die datenverbindung und Transaktion zu aber es fehlt noch das cmd.exequery (oder so ähnlich, weis nicht wie das bei .net heißt) vor dem Commit. |
Re: Update einer Interbase Datenbank funktioniert nicht
erstmal danke fuer die Antworten :)
Ich hab nun alles nochmal geschrieben und eure Ratschlaege beruecksichtigt(Wenn ich dies nich vorher schon getestet hab ;)) und nun sieht es so aus, dass ich eine Funktion schreiben wollte womit nur ein Attribut geaendert wird.
Delphi-Quellcode:
doch ist es egal was ich mache, ich bekomme IMMER ein false zurueck! bin verzweifelt :(
function MemberDataUpdate(AUSWAHL: string): boolean;
var s_sql, Constr, ConOptions: string; cmd: BdpCommand; trsa: BdpTransaction; datred: BdpDataReader; DBCon: BdpConnection; begin //Einstellungen der Datenbank sowie auch bei ConOptions ConStr := 'Provider=Interbase;' + 'assembly=Borland.Data.Interbase, Version=2.5.0.0,' + 'Culture=neutral, PublicKeyToken=91d62ebb5b0d1b1b;' + 'vendorclient=gds32.dll;pooling=True;' + 'grow on demand=True;database=localhost:C:\InterbaseDB\XYZ.IB;' + 'username=sysdba;max pool size=100;password=masterkey'; ConOptions := 'LoginPrompt=False;SQLDialect=3;RoleName=None;' + 'CommitRetain=true;ServerCharSet=NONE;RollbackRetain=False;' + 'TxnIsolation=ReadCommitted;WaitOnLocks=true'; //Einstellungen in die Verbindung implementieren DBCon:= BdpConnection.Create(ConStr); DBCon.ConnectionOptions:= ConOptions; s_sql := 'UPDATE MITARBEITER SET VORNAME ='+AUSWAHL+' WHERE KUERZEL= '+''''+Environment.UserName+''''; cmd := BdpCommand.Create(s_sql, DBCon); try DBCon.Open; trsa := DBCon.BeginTransaction; cmd.Transaction:=trsa; cmd.ExecuteNonQuery; {das muesste das cmd.exequery sein^^ is zwar NON query aber nen anderes gabs nich} trsa.Commit; DBCon.Close; result := true; finally result := false; end; end; |
Re: Update einer Interbase Datenbank funktioniert nicht
du verwendest jetzt try - finally - end da kommst du immer ins finally und damit als Rückgabewert false. Du meinst sicher try except end
|
Re: Update einer Interbase Datenbank funktioniert nicht
args ^^ Delphi is so ungewohnt ^^'
aber naja wenn ich es auf except stelle kommt zwar nun true aber updaten tut ers trotzdem nich mmhh |
Re: Update einer Interbase Datenbank funktioniert nicht
und benutze Parameter und bau den SQLString nicht so zusammen ;)
|
Re: Update einer Interbase Datenbank funktioniert nicht
Zitat:
Delphi-Quellcode:
[/delphi]
s_sql := 'UPDATE MITARBEITER SET VORNAME ='''+AUSWAHL+''' WHERE KUERZEL= '+''''+Environment.UserName+'''';
danke an alle ;) |
Re: Update einer Interbase Datenbank funktioniert nicht
Die Lösung über Parameter wäre aber eleganter.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:34 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz