AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Prism Update einer Interbase Datenbank funktioniert nicht
Thema durchsuchen
Ansicht
Themen-Optionen

Update einer Interbase Datenbank funktioniert nicht

Ein Thema von DeadMatt · begonnen am 12. Jan 2007 · letzter Beitrag vom 12. Jan 2007
Antwort Antwort
DeadMatt

Registriert seit: 11. Jan 2007
32 Beiträge
 
#1

Update einer Interbase Datenbank funktioniert nicht

  Alt 12. Jan 2007, 10:04
Datenbank: Interbase • Version: 7.5 • Zugriff über: ADO
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:
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;
aber das UPDATEN klappt nicht...hab das so ausprobiert:
Delphi-Quellcode:
        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
Die Vars sind so deklariert:
Delphi-Quellcode:
s_sql: string;
  cmd: BdpCommand;
  trsa: BdpTransaction;
  datred: BdpDataReader;
ich hoffe mir kann jemand helfen!
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Update einer Interbase Datenbank funktioniert nicht

  Alt 12. Jan 2007, 10:16
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Update einer Interbase Datenbank funktioniert nicht

  Alt 12. Jan 2007, 10:27
Stringfelder müßen gequoted werden oder du verwendest Parameter.
Markus Kinzler
  Mit Zitat antworten Zitat
Andreas Schilling

Registriert seit: 6. Sep 2006
106 Beiträge
 
Delphi 10.3 Rio
 
#4

Re: Update einer Interbase Datenbank funktioniert nicht

  Alt 12. Jan 2007, 11:06
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.
  Mit Zitat antworten Zitat
DeadMatt

Registriert seit: 11. Jan 2007
32 Beiträge
 
#5

Re: Update einer Interbase Datenbank funktioniert nicht

  Alt 12. Jan 2007, 13:14
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:
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;
doch ist es egal was ich mache, ich bekomme IMMER ein false zurueck! bin verzweifelt
  Mit Zitat antworten Zitat
Andreas Schilling

Registriert seit: 6. Sep 2006
106 Beiträge
 
Delphi 10.3 Rio
 
#6

Re: Update einer Interbase Datenbank funktioniert nicht

  Alt 12. Jan 2007, 13:19
du verwendest jetzt try - finally - end da kommst du immer ins finally und damit als Rückgabewert false. Du meinst sicher try except end
  Mit Zitat antworten Zitat
DeadMatt

Registriert seit: 11. Jan 2007
32 Beiträge
 
#7

Re: Update einer Interbase Datenbank funktioniert nicht

  Alt 12. Jan 2007, 13:24
args ^^ Delphi is so ungewohnt ^^'
aber naja wenn ich es auf except stelle kommt zwar nun true aber updaten tut ers trotzdem nich mmhh
  Mit Zitat antworten Zitat
Benutzerbild von MagicAndre1981
MagicAndre1981

Registriert seit: 4. Jun 2004
Ort: Nordhausen
2.214 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Update einer Interbase Datenbank funktioniert nicht

  Alt 12. Jan 2007, 13:27
und benutze Parameter und bau den SQLString nicht so zusammen
André
"A programmer is just a tool which converts caffeine into code", daran wirds wohl liegen, dass ich Abends nie pennen kann

Zitat von Luckie:
Nicht nur dass ihr offtopic geworden seid, jetzt werdet ihr selber im Offtopic noch offtopic
  Mit Zitat antworten Zitat
DeadMatt

Registriert seit: 11. Jan 2007
32 Beiträge
 
#9

Re: Update einer Interbase Datenbank funktioniert nicht

  Alt 12. Jan 2007, 13:31
Zitat von MagicAndre1981:
und benutze Parameter und bau den SQLString nicht so zusammen
*g* naja ich hab nu die lösung^^ habs aber wieder so aufgebaut
s_sql := 'UPDATE MITARBEITER SET VORNAME ='''+AUSWAHL+''' WHERE KUERZEL= '+''''+Environment.UserName+''''; [/delphi]
danke an alle
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Update einer Interbase Datenbank funktioniert nicht

  Alt 12. Jan 2007, 13:39
Die Lösung über Parameter wäre aber eleganter.
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz