Delphi-PRAXiS

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)

dominikkv 4. Nov 2006 19:17

Datenbank: ACCESS • Zugriff über: ka

Umgang mit Datenbank
 
hi
ich hab noch nie was mit einer datenbank gemacht...bin also in sachen datenbanken nicht so bewandert^^
ich habe vor so ca. 4000 Datensätze in eine datenbank zu schreiben, am besten eine access datenbank.

hab schon im internet gesucht, auch hier im Forum, allerdings nichts brauchbares gefunden...
ich brauche irgendjemanden der mir hier kurz sagt: "du brauchst die und die komponente und mit diesem befehl legst du einen neuen datensatz an und mit diesem schreibst du deine daten rein..." :zwinker:

ich hab turbo delphi 2006 explorer, kann also keine zusätzlichen komponenteninstallieren...
ich hab schon dieses Tutorial angeschaut, allerdings gibt es bei mir kein Datei->Neu->Tabelle.

hoffe ihr könnt mir helfen :spin:

mkinzler 4. Nov 2006 19:18

Re: Umgang mit Datenbank
 
Bei Access am Besten per Ado (dbGo)

Bernhard Geyer 4. Nov 2006 21:46

Re: Umgang mit Datenbank
 
Schau mal in das Demos/ADO-Verzeichnis deiner Delphi-Installation

dominikkv 5. Nov 2006 10:43

Re: Umgang mit Datenbank
 
hi
ich bin jetzt so weit das ich eine verbindung zu der datenbank aufgebaut habe (über TADOConnection)
Delphi-Quellcode:
function TDataModule2.OpenDatabase: Boolean;
begin
  OpenDatabase:=true;
  try
    ADOConnection1.Open;
  except
    OpenDatabase:=false;
  end;
end;
Die Datenbank habe ich ersellt indem ich in Access einfach neue DB erstellt habe und diese gespeichert hab.
Wisst ihr jetzt wie ich eine Tabelle darin erstellen kann und dann auf die Felder zugreifen kann?
mfg.dominikkv

Bernhard Geyer 5. Nov 2006 10:50

Re: Umgang mit Datenbank
 
Entweder du gest bei Access über ADOX oder schickst CREATE TABLE ... SQL-Anweisungen zu deiner Datenbank.

dominikkv 5. Nov 2006 11:29

Re: Umgang mit Datenbank
 
ADOX kann ich nicht installieren...wei ich die Explorer Edition hab...und wie mach ich das mit CREATE TABLE?
brauch ich da ne TADOTable?

mkinzler 5. Nov 2006 11:32

Re: Umgang mit Datenbank
 
Nein, Table-Komponenten vertecken SQL vor dem unbedarften Anwender. TADOQuery wäre die richtige Komponente.

dominikkv 5. Nov 2006 11:57

Re: Umgang mit Datenbank
 
und wie verwende ich die?
ich bin grad ein bisschen :spin2: :roteyes: :freak:
ich will einfach nur wissen wie ich einen datensatz in eine Access-DB schreiben kann...
kann mir einer von euch ein beispiel geben wie ich sowas mache? :feuerchen:

mkinzler 5. Nov 2006 11:59

Re: Umgang mit Datenbank
 
Bernhardt hat dir doch geraten, die Beispiele von Delphi anzusehen, haben die dir nicht geholfen?

Phoenix 5. Nov 2006 12:02

Re: Umgang mit Datenbank
 
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.

mkinzler 5. Nov 2006 12: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 13: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 15: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 17: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 17:53

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

dominikkv 5. Nov 2006 18: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 18: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 18: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 18: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 19:05 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