Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Benötige dringend hilfe in ADO Grundlagen (https://www.delphipraxis.net/6986-benoetige-dringend-hilfe-ado-grundlagen.html)

MaxiMcL 29. Jul 2003 13:10


Benötige dringend hilfe in ADO Grundlagen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Leute,

ich sitze seit geschlagenen 2 Wochen permanent vor meinem PC :( und versuche ein Programm zu schreiben, mit dem ich einer Access-Datenbank, bestehend aus 3 Spalten, Werte aus 3 Edit-Feldern zuweisen kann.
Jedoch blicke ich in Sachen ADO überhaubt nicht durch. Ich hab schon das ganze Web durchforstet, jedoch nirgends etwas für einen Anfänger gefunden.

Meine Fragen: Wie kann ich die Verbindung mit ADOConnect aufbauen und wie kann ich neue Zeilen in die Access-Datenbank hinzufügen?

Bitte helft mir :!:

Ich habe das Programmformular mal beigefügt.

jschade 29. Jul 2003 14:04

Re: Benötige dringend hilfe in ADO Grundlagen
 
hallo,

hab auch gerade vor 3 wochen angefangen, 'n bisschen mit delphi und access rumzuprobieren. das forum hier is dafür echt klasse. kann dir auch noch 'n buch empfehlen (so zum einstieg), falls du die möglichkeit hast irgendwo eins auszuleihen: datenbankprogrammierung mit borland delphi 6 / isbn 3-446-21736-3

1. du brauchst ne adocommand-komponente

als connection string gibst du folgendes ein:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\test.mdb

2. button

Code:
procedure TForm.Button1Click(Sender: TObject);

var a,b,c : String;

begin

a := Edit1.Text;
b := Edit2.Text;
c := Edit3.Text;

ADOCommand1.CommandType := cmdText;
ADOCommand1.CommandText := 'INSERT INTO Tabellenname(Spalte1,Spalte2,Spalte3) VALUES ('+QuotedStr(a)+','+QuotedStr(b)+','+QuotedStr(c)+')';
ADOCommand1.Execute;

end;
also bei mir funktioniert's so, hoffe dir hilft's weiter...

mfg jan

MaxiMcL 29. Jul 2003 14:45

Re: Benötige dringend hilfe in ADO Grundlagen
 
Vielen Dank für deine Hilfe. :D
Kann ich ADOCommand auch in Verbindung mit ADOConnection benutzen? Ich habe schon eine ADOConnection im Quelltext, die bestimmte Aufgaben hat.

MaxiMcL 29. Jul 2003 15:07

Re: Benötige dringend hilfe in ADO Grundlagen
 
Ich hab das mal probiert, das ADOCommand mit dem ADOConnection zu verbinden. Da kommt aber beim drücken auf den button ein fehler.

Ich hab das so in einer Funktion eingegeben:
Delphi-Quellcode:
function TDataModule1.NeuerSatz(Wert1,Wert2,Wert3: string): Boolean;
begin
  NeuerSatz := true;
  try
    ADOCommand1.CommandText := 'INSERT INTO B 24-700(Artikelbeschreibung,Artikelname,ArtikelNr) VALUES ('+QuotedStr(Wert1)+','+QuotedStr(Wert2)+','+QuotedStr(Wert3)+')';
    ADOCommand1.Execute;
  except
    NeuerSatz := false;
  end;
end;

jschade 30. Jul 2003 09:38

Re: Benötige dringend hilfe in ADO Grundlagen
 
was bekommst du für ne meldung?

könnte evtl. daran liegen, dass du diese zeile vergessen hast?!:

Code:
ADOCommand1.CommandType := cmdText;

MaxiMcL 30. Jul 2003 11:35

Re: Benötige dringend hilfe in ADO Grundlagen
 
Also. Die Fehlermeldung lautet:

Im Projekt Project1.exe ist eine Exception der Klasse EOleException aufgetreten. Meldung:'Syntaxfehler in der INSERT INTO-Anweisung'. ...

Auch nachdem ich
Delphi-Quellcode:
ADOCommand1.CommandType := cmdText;
eingefügt habe.

Ich werde aus der Fehler,eldung nich schlau. Vielleicht weil der Tabellenname 'B 24-700' probleme macht?

MaxiMcL 30. Jul 2003 11:37

Re: Benötige dringend hilfe in ADO Grundlagen
 
Das ist die Prozedur, in der die Funktion aufgerufen wird:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  DataModule1.NeuerSatz(NeuerSatz.Serien_Nr_Mainboard,
  NeuerSatz.Teilenr, NeuerSatz.Datecode);
end;

r_kerber 30. Jul 2003 11:47

Re: Benötige dringend hilfe in ADO Grundlagen
 
Hast Du tatsächlich einen Tabellennamen mit 'nem Leerzeichen? Das finde ich schon etwas merkwürdig. Dann schreibe den Tabellennamen mal in "".
Und lass beim INSERT-Befehl mal die Klammer mit den Spaltennnamen weg. Das hast Du sicher mit dem UPDATE-Befehl verwechselt

MaxiMcL 30. Jul 2003 11:54

Re: Benötige dringend hilfe in ADO Grundlagen
 
Jetzt sieht die Zeile so aus, und es kommt leider immernoch der gleiche Fehler. :cry:

Delphi-Quellcode:
ADOCommand1.CommandText := 'INSERT INTO "B 24-700" VALUES ('+QuotedStr(Wert1)+','+QuotedStr(Wert2)+','+QuotedStr(Wert3)+')';
Ich schaue nochmal nach dem Tabellennamen.

jschade 30. Jul 2003 13:39

Re: Benötige dringend hilfe in ADO Grundlagen
 
Zitat:

Zitat von r_kerber
Hast Du tatsächlich einen Tabellennamen mit 'nem Leerzeichen? Das finde ich schon etwas merkwürdig. Dann schreibe den Tabellennamen mal in "".
Und lass beim INSERT-Befehl mal die Klammer mit den Spaltennnamen weg. Das hast Du sicher mit dem UPDATE-Befehl verwechselt

hab's mal kurz ausprobiert und dein problem is wirklich der tabellenname mit dem leerzeichen!hab's auch nicht mit insert into "tabellenname" ... hinbekommen...

die spaltennamen kommen übrigens beim insert in klammern hinter den tabellennamen, denn beim update werden sie doch durch das "set" im sql-string (update tabelle set Spalte='wert') bestimmt,oder?

r_kerber 30. Jul 2003 13:41

Re: Benötige dringend hilfe in ADO Grundlagen
 
Wenn es sich bei die Spalten vom Typ Character dann müssen die einzufügenden Strings im INSERT-Befehl noch innerhalb von '' stehen!
Delphi-Quellcode:
ADOCommand1.CommandText := 'INSERT INTO "B 24-700" VALUES ('''+QuotedStr(Wert1)+''','''+QuotedStr(Wert2)+''','''+QuotedStr(Wert3)+''')';

r_kerber 30. Jul 2003 13:47

Re: Benötige dringend hilfe in ADO Grundlagen
 
Zitat:

Zitat von jschade
die spaltennamen kommen übrigens beim insert in klammern hinter den tabellennamen, denn beim update werden sie doch durch das "set" im sql-string (update tabelle set Spalte='wert') bestimmt,oder?

. Stimmt, muß man aber nur angeben, wenn man nicht für alle Spalten einen Werte angibt.

jschade 30. Jul 2003 13:50

Re: Benötige dringend hilfe in ADO Grundlagen
 
Zitat:

Zitat von r_kerber
Zitat:

Zitat von jschade
die spaltennamen kommen übrigens beim insert in klammern hinter den tabellennamen, denn beim update werden sie doch durch das "set" im sql-string (update tabelle set Spalte='wert') bestimmt,oder?

. Stimmt, muß man aber nur angeben, wenn man nicht für alle Spalten einen Werte angibt.

... man lernt nie aus :oops:

r_kerber 30. Jul 2003 13:57

Re: Benötige dringend hilfe in ADO Grundlagen
 
Habe in 'nem schlauen Buch nachgeschaut! :chat:

MaxiMcL 30. Jul 2003 18:03

Re: Benötige dringend hilfe in ADO Grundlagen
 
Vielen Dank für eure Zahlreichen antworten. :D

Jetz sieht die Funktion so aus:
Delphi-Quellcode:
function TDataModule1.SchreibeinTabelle(Wert1,Wert2,Wert3: string): Boolean;
begin
  SchreibeinTabelle := true;
  try
    ADOCommand1.CommandType := cmdText;
    ADOCommand1.CommandText := 'INSERT INTO "B24-700" VALUES ('''+QuotedStr(Wert1)+''','''+QuotedStr(Wert2)+''','''+QuotedStr(Wert3)+''')';
    ADOCommand1.Execute;
  except
    SchreibeinTabelle := false;
  end;
end;
Geht aber immer noch net :( . Jetzt kommt aber eine andere Exception: Syntaxfehler in Abfrage. Die Abfrage ist unvollständig.

jschade 30. Jul 2003 18:18

Re: Benötige dringend hilfe in ADO Grundlagen
 
und so?

Code:
function TDataModule1.NeuerSatz(Wert1,Wert2,Wert3: string): Boolean;
begin
  NeuerSatz := true;
  try
    ADOCommand1.CommandType := cmdText;
    ADOCommand1.CommandText := 'INSERT INTO B24-700(Artikelbeschreibung,Artikelname,ArtikelNr) VALUES ('+QuotedStr(Wert1)+','+QuotedStr(Wert2)+','+QuotedStr(Wert3)+')';
    ADOCommand1.Execute;
  except
    NeuerSatz := false;
  end;
end;
die drei hochkommas solltest du nicht brauchen, denn dafür sorgt quotedstr()...

r_kerber 31. Jul 2003 07:24

Re: Benötige dringend hilfe in ADO Grundlagen
 
Zitat:

Zitat von jschade
die drei hochkommas solltest du nicht brauchen, denn dafür sorgt quotedstr()...

Tschuldigung, das habe ich völlig ignoriert... :oops:

MaxiMcL 31. Jul 2003 08:58

Re: Benötige dringend hilfe in ADO Grundlagen
 
Es hat funktioniert!!! :hello:

Vielen Dank für eure hilfe :D


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:30 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-2025 by Thomas Breitkreuz