Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Umgang mit Datenbank (https://www.delphipraxis.net/80212-umgang-mit-datenbank.html)

mkinzler 5. Nov 2006 11:04

Re: Umgang mit Datenbank
 
http://www.dsdt.info/tutorials/ado/
http://www.dsdt.info/tutorials/dbteil2/
http://www.dsdt.info/tutorials/

dominikkv 5. Nov 2006 12:18

Re: Umgang mit Datenbank
 
Zitat:

Zitat von mkinzler
Bernhardt hat dir doch geraten, die Beispiele von Delphi anzusehen, haben die dir nicht geholfen?

es gibt bei mir keine beispiele dazu...

Zitat:

Zitat von mkinzler

hab ich beide schon angeschaut...funktionieren ein paar sachen nicht weil ich diese sch*** explorer edition hab...

Zitat:

Zitat von Phoenix
Zitat:

Zitat von dominikkv
ich will einfach nur wissen wie ich einen datensatz in eine Access-DB schreiben kann...

SQL-Code:
INSERT INTO
   tabellenname
   (Feldname1, Feldname2, Feldname3)
VALUES
   (Wert1, Wert2, Wert3);
Wobei Du Textwerte z.B. mit ' escapen musst.

:)
hab nun Folgendes:
Delphi-Quellcode:
procedure TForm1.Button5Click(Sender: TObject);
begin
DataModule2.ADOConnection1.BeginTrans;
with DataModule2.ADOQuery1 do
  try
    Active:=false;
    SQL.Clear;
    Append;
    SQL.Add('INSERT INTO Fehlerbericht (Feld1, Feld2, Feld3) VALUES ("Wert1", "Wert2", "Wert3")');
    ExecSQL;
    DataModule2.ADOConnection1.CommitTrans;
      except
    on E:Exception do DataModule2.ADOConnection1.RollbackTrans;
    end;
end;
wenn ich aber auf den button klicke kommt die fehlermeldung:
Zitat:

---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Datei_Filtern.exe ist eine Exception der Klasse EDatabaseError mit der Meldung 'ADOQuery1: Operation bei geschlossener Datenmenge nicht ausführbar' aufgetreten.
ich habe einfach in Access eine neue DB und darin eine neue Tabelle erstellt die Fehlerbericht heisst und darin die Spalten Feld1, Feld2 und Feld3 erzeugt. ich habs schon mit primärschlüssel und ohne primärschlüssel versucht...

Schweesspunkt 5. Nov 2006 14:23

Re: Umgang mit Datenbank
 
Hallo,

Zitat:

procedure TForm1.Button5Click(Sender: TObject);
begin
DataModule2.ADOConnection1.BeginTrans;
with DataModule2.ADOQuery1 do
try
Active:=false;
SQL.Clear;
Append;
SQL.Add('INSERT INTO Fehlerbericht (Feld1, Feld2, Feld3) VALUES ("Wert1", "Wert2", "Wert3")');
ExecSQL;
DataModule2.ADOConnection1.CommitTrans;
except
on E:Exception do DataModule2.ADOConnection1.RollbackTrans;
end;
end;
Ich glaube du musst nur active auf true setzten.



M.f.G.
Kunsch Alain

dominikkv 5. Nov 2006 16:26

Re: Umgang mit Datenbank
 
ok, hat sich erledigt...ich hab die tabelle nochmal gelöscht und neu angelegt und jetzt gehts... :mrgreen:
so, noch eine frage:
so kann ich in ein feld vom typ "Text" schreiben:
SQL-Code:
SQL.Add('INSERT INTO Tabelle (Textfeld1, Textfeld2) VALUE ('+QuotedStr(variable1)+', '+QuotedStr(variable2)+');
wie kann ich jetzt integer-variablen in ein feld vom typ "Zahl" (Long Integer) Schreiben?

mkinzler 5. Nov 2006 16:53

Re: Umgang mit Datenbank
 
SQL-Code:
INSERT INTO Tabelle (<integerfeld>) VALUE (<Wert>);

dominikkv 5. Nov 2006 17:04

Re: Umgang mit Datenbank
 
thx
wie mache ich das eigendlich wenn ich 2 tabellen in einer DB ändern will...
SQL-Code:
with DataModule2.ADOQuery1 do
  try
    Active:=false;
    SQL.Clear;
    SQL.Add('INSERT INTO Tabelle1 (feld1, Feld2) VALUE ("a", "b")');
    SQL.Add('INSERT INTO Tabelle2 (feld1, Feld2) VALUE ("a", "b")');
    ExecSQL;
    DataModule2.ADOConnection1.CommitTrans;
   except
    on E:Exception do DataModule2.ADOConnection1.RollbackTrans;
   end;
...geht irgendwie nicht:
Zitat:

Im Projekt Datei_Filtern.exe ist eine Exception der Klasse EOleException mit der Meldung 'Fehlendes Semikolon (;) am Ende der SQL-Anweisung' aufgetreten.

mkinzler 5. Nov 2006 17:12

Re: Umgang mit Datenbank
 
Am besten mit Parametern:
Delphi-Quellcode:
with DataModule2.ADOQuery1 do
  try
    Active:=false;
    SQL.Text := 'INSERT INTO Tabelle1 (feld1, Feld2) VALUE ( :w1, :w2)');
    Paramters.ParamByName( w1, 'a');
    Paramters.ParamByName( w2, 'b');
    ExecSQL;
    Paramters.ParamByName( w1, 'c');
    Paramters.ParamByName( w2, 'd');
    ExecSQL;
    ...
    DataModule2.ADOConnection1.CommitTrans;
   except
    on E:Exception do DataModule2.ADOConnection1.RollbackTrans;
   end;

dominikkv 5. Nov 2006 17:18

Re: Umgang mit Datenbank
 
so wie ich das interpretiere legt er dann aber 2 datensätze in einer tabelle an...ich will aber den ersen datensatz in tabelle1 und den zweiten datensatz in tabelle2...und die 2 tabellen haben unterschiedliche spaltennamen...

mkinzler 5. Nov 2006 17:27

Re: Umgang mit Datenbank
 
Sorry hab das mit Tabelle2 überlesen. TADOQuery kann immer nur ein Statement auf einmal ausführen. Für mehrere brauchst du TADOCommand.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:01 Uhr.
Seite 2 von 2     12   

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