Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi speicherung in der datenbank funktioniert immer noch nicht.. (https://www.delphipraxis.net/16507-speicherung-der-datenbank-funktioniert-immer-noch-nicht.html)

Sulustaner2004 18. Feb 2004 09:48


speicherung in der datenbank funktioniert immer noch nicht..
 
Wer kann mir helfen und mir sagen warum das programm die anweisung nicht in die datenbank schreibt...
er soll aus einem textfeld mit dem namen tb_versuch_id eine nummer in das entsprechende feld der tabelle in der datenbank schreiben....
das feld in der tabelle heißt versuchs_id

hier ist der auszug aus meinem quellcode

Delphi-Quellcode:
procedure Tversuch.CB_TakeClick(Sender: TObject);
var versflid :string;
begin
 versflid:=adoquery1.fieldbyname('versuchs_id').AsString;
  begin
  if adoquery1.Locate('versuchs_id',tb_versuch_id.Text,[]) then

    begin
     with adoquery1 do
     begin
     sql.Clear;
     close;
     sql.Add('SELECT dbo_Versuchsflaechen_ST.Versuchsfl_ID,');
     sql.Add('dbo_Versuchsflaechen_ST.Versuchsfl_Bezeichnung, dbo_Versuchsflaechen_ST.Versuchs_ID,');
     sql.Add('FROM dbo_Versuchsflaechen_ST');
     sql.add('WHERE dbo_Versuchsflaechen_ST.Versuchsfl_Bezeichnung ='+quotedstr(versflid));
     open;
     end;

  while not adoquery1.Eof do
    begin
     adoquery1.Edit;
     adoquery1.FieldByName('versuchs_id').asstring;
     adoquery1.Post;
     adoquery1.Next;
     end;
    end;
   end;
  end;
end.
bin langsam aber sicher am verzweifeln... :wall:

Daniel 18. Feb 2004 09:53

Re: benötige hilfe...
 
Hallo ;-)
Bitte ändere den Titel Deines Beitrages, da sich unter "Benötige Hilfe" keiner etwas Rechtes vorstellen kann.

APP 18. Feb 2004 09:54

Re: benötige hilfe...
 
Hallo,

falls Dein Query eine lebende (=editierbare) Datenmenge zurückliefert, würde ich darauf Tippen, dass die Zuweisung fehlt.
Code:
     adoquery1.Edit;
     adoquery1.FieldByName('versuchs_id').asstring[color=red] := 'Ich bin ein neuer Text für dieses Feld'[/color];
     adoquery1.Post;
     adoquery1.Next;

Sulustaner2004 18. Feb 2004 10:03

Re: speicherung in der datenbank funktioniert nicht...
 
er soll diesen wert den ich in die box schreibe in das entsprechende feld in der datenbank schreiben...
z.b.
die spalte in der tabelle heißt versuch_id...in ihr sind nur nummern gespeichert...
wenn ich diese nummer nun ändern will und sie mit hilfe dieser textbox eintragen will sieht es erstmal so aus als wenn alles geklappt hat.
nur wenn ich dann nachsehe dann hat sich nichts geändert !!!

Robert_G 18. Feb 2004 10:05

Re: speicherung in der datenbank funktioniert nicht...
 
Ich sehe keine einzige Zuweisung in deinem Code...
Die hätte dann wohl...
Delphi-Quellcode:
  While Not adoquery1.Eof Do
  Begin
    adoquery1.Edit;
    // ... hier stehen sollen
    adoquery1.FieldByName('versuchs_id').asString {=>>} := IrgendWas {<<=};
    adoquery1.Post;
    adoquery1.Next;
  End;
p.s.: Dieses "Edit","Post",... -Zeugs macht in meinen Augen nur Sinn um auf Usereingaben zu reagieren.

Wenn du nur Code hast, sollte dort nicht Zeilenweise durch ein DataSet gesprungen werden.
Ein simples ...
Delphi-Quellcode:
  With Query Do
  Begin
    Active := False;
    SQL.Text :=
      'UPDATE dbo_Versuchsflaechen_ST t' + #10 +
      ' SET t.Versuchs_ID = :i_NewID' + #10 +
      'WHERE t.Versuchsfl_Bezeichnung = :i_VersFlID';
    prepared := True;
    Parameters.ParamByName('i_NewID').Value := IrgendWas;
    Parameters.ParamByName('i_VersFlID').Value := VersFlID;
    ExecSQL;
  End;
... reicht doch vollkommen aus.
Und wenn du jetzt noch ein Commit auf deine Session/Connection anwendest sind die Änderungen auch in der DB.

Sulustaner2004 18. Feb 2004 10:22

Re: speicherung in der datenbank funktioniert nicht...
 
Also um ehrlich zu sein, das Programm soll ja auch auf Usereingaben reagieren...
Es soll erst alle Eingaben abwarten und dann mit einem klick auf den Button cb_take alles in die Datenbank schreiben...

Robert_G 18. Feb 2004 10:30

Re: speicherung in der datenbank funktioniert nicht...
 
Edit,Post,... sind von Vorteil bei Verwendung eines DBNavigators oder einem Grid.
Bei dir soll doch einmalig, durch Knopfdruck, eine Aktualisierung durchgeführt werden.
Wenn ein SQL-Statement den Job erledigen kann, ist es immer DBKompo-Basteleien vorzuziehen.
Jeder deiner Post-Aufrufe ist ein UPDATE!

Sulustaner2004 18. Feb 2004 10:36

Re: speicherung in der datenbank funktioniert nicht...
 
Achso...
da soll mal einer sagen ich kann nichts mehr lernen !! :-)

Sulustaner2004 19. Feb 2004 07:39

Re: speicherung in der datenbank funktioniert nicht...
 
Also irgendwie kann ich machen was ich will...diese verdammt speicherung in der datenbank klappt einfach nicht...
ich kann auf den button klicken und nichts tut sich...
jetzt habe ich schon den quellcode aus einen anderen programm von mir genommen wo er funktioniert hat und das resultat war gleich null :wall:
ich weiß nicht mehr was ich machen soll...
Delphi-Quellcode:
var versflid :string;
begin
versflid:=adoquery1.fieldbyname('versuchs_id').AsString;
  if (tb_versuch_id.Text ='') then
      showmessage ('Bitte was eintragen.');

   if adoquery1.Locate('Versuchs_ID',tb_versuch_id.Text,[])then

      adoquery1.FieldByName('Versuchs_ID').AsInteger;

    with adoquery1 do
     begin
     close;
     sql.Clear;
     sql.Add('SELECT dbo_Versuchsflaechen_ST.Versuchs_ID,');
     sql.Add('dbo_Versuchsflaechen_ST.Versuchsfl_Bezeichnung, dbo_Versuchsflaechen_ST.Versuchs_ID');
     sql.Add('FROM dbo_Versuchsflaechen_ST');
     sql.Add('WHERE dbo_Versuchsflaechen_ST.Versuchsfl_Bezeichnung ='+ quotedstr(versflid));
     open;
     end;

   while not adoquery1.Eof do
    begin
     adoquery1.Edit;
     adoquery1.FieldByName('Versuchs_ID').Asstring:=tb_versuch_id.Text;
     adoquery1.Post;
     tb_versuch_id.Clear;
     adoquery1.Next;
    end;
  end;
es hat leider auch nicht mit euren vorschlägen weiter oben in der anfrage geklappt...
ich bin echt am verzweifeln...

r_kerber 19. Feb 2004 07:57

Re: speicherung in der datenbank funktioniert immer noch nic
 
Versuche es doch mal mit mit einem UPDATE-Statement (ungetestet!):
Delphi-Quellcode:
var versflid :string;
begin
versflid:=adoquery1.fieldbyname('versuchs_id').AsString;
  if (tb_versuch_id.Text ='') then
      showmessage ('Bitte was eintragen.');

    with adoquery1 do
     begin
     close;
     sql.Clear;
     sql.Add('UPDATE dbo_Versuchsflaechen_ST');
     sql.Add('SET Versuchs_ID=' + QuotedStr (tb_versuch_id.Text));
     sql.Add('WHERE Versuchsfl_Bezeichnung =' + quotedstr(versflid));
     ExecSQL;
     end;

  end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:33 Uhr.
Seite 1 von 2  1 2      

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-2025 by Thomas Breitkreuz