Autor Beitrag
Anarkids
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 81

Win XP Pro, Freundin
Delphi 2006, C/C++, VisualBasic
BeitragVerfasst: Do 06.04.06 08:32 
guten morgen alle miteinander!

ich habe eine datenbank mit 5 tabellen:

- Servername
- Kunden
- Personal
- Überwachungsauftrag
- Dienste

jetzt möchte ich z.B. über 5 Eingabefelder Daten in die 5 Spalten der Tabelle Servername einfügen/schreiben und ggf. auch wieder löschen, allerdings finde ich die Kommandos dafür nicht :(

Ich verwende eine Access-Datenbank.

mfg, anarkids

_________________
Mr.D
Change begins with you - TODAY!
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Do 06.04.06 08:36 
Lese Dir bitte das unter www.delphi-forum.de/....php?p=350651#350651 ... Da sollte Dir sicherlich TDataSet.Post auffallen ...

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Anarkids Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 81

Win XP Pro, Freundin
Delphi 2006, C/C++, VisualBasic
BeitragVerfasst: Do 06.04.06 10:25 
sorry ich hätt echt die suche benutzen sollen. habe was gutes gefunden.

doch jetzt habe ich folgendes problem, hier mal der code:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
const cINSERT = 'INSERT INTO SERVERDATEN (SERVERNAME,URL,IP-ADRESSE,SERVICE-LEVEL) values ("%s","%s","%s","%s")';

procedure TForm4.Button2Click(Sender: TObject);
var sSQL : string;
begin
  ADO_Q.Open //mein TADOQuery
  try
   sSQL := Format(cInsert,[S_Edit1,S_Edit2,S_Edit3,S_Edit5]);
   ADO_Q.ExecSQL;
  finally
   ADO_Q.Close;
  end;
end;


und dann noch die Fehlermeldung beim Klicken auf den Button2:
ADO_Q: Eigenschaft SQL fehlt.

Sorry, ich kenn mich halt echt noch nich so aus, wie's für solch ein Programm eigentlich von Nöten wär :(

_________________
Mr.D
Change begins with you - TODAY!
FaTaLGuiLLoTiNe
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 200
Erhaltene Danke: 5

Windows 7, Windows 8.1
Delphi XE
BeitragVerfasst: Do 06.04.06 12:11 
Ich habe mit den ADO Komponenten noch nicht gearbeitet, aber ich würde mal tippen, dass du den in deiner Variablen sSQL enthaltenen String noch an das ADOQuery übergeben musst:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
const cINSERT = 'INSERT INTO SERVERDATEN (SERVERNAME,URL,IP-ADRESSE,SERVICE-LEVEL) values ("%s","%s","%s","%s")';

procedure TForm4.Button2Click(Sender: TObject);
var sSQL : string;
begin
  ADO_Q.Open //mein TADOQuery
  try
   sSQL := Format(cInsert,[S_Edit1,S_Edit2,S_Edit3,S_Edit5]);
   ADO_Q.SQL := sSQL;
   ADO_Q.ExecSQL;
  finally
   ADO_Q.Close;
  end;
end;


Nur so 'ne Vermutung. ;)

_________________
<< FaTaLGuiLLoTiNe >>
Rhinoceroses don't play games!
Anarkids Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 81

Win XP Pro, Freundin
Delphi 2006, C/C++, VisualBasic
BeitragVerfasst: Do 06.04.06 12:41 
danke für deine hilfe, aber daran lag es leider nicht.

ich weiß langsam echt nichmehr weiter. hab schon 5 foren durchsucht und nix hat was gebracht :(

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure TForm4.Button4Click(Sender: TObject);
var sSQL: string;
begin
 ADO_Q.Open;
 try
  ADO_Q.active:=false;
  ADO_Q.sql.clear;
  ADO_Q.sql.add('INSERT INTO SERVERDATEN (SERVERNAME,URL,IP-ADRESSE,SERVICE-LEVEL) values("'+s_edit1+'","'+s_edit1.text+'","'+s_edit2.text+'","'+s_edit3.text+'","'+s_edit5.text+'")');
  ADO_Q.Active:=true;
 finally
  ADO_Q.close;
 end;
end;

_________________
Mr.D
Change begins with you - TODAY!
Lemmy
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 792
Erhaltene Danke: 49

Windows 7 / 10; CentOS 7; LinuxMint
Delphi 7-XE10.1, VS 2015
BeitragVerfasst: Do 06.04.06 13:39 
Hi,

warum hast Du das

ADO_Q.ExecSQL;

rausgenommen und mit dem ADO_Q.Active=true; ersetzt? DML (Data Manipulation Language, also Insert, delete,...) MUSS per ExecSQL ausgeführt werden! .Active=true oder .Open geht nur bei Select-Statemnts!

Lemmy
Anarkids Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 81

Win XP Pro, Freundin
Delphi 2006, C/C++, VisualBasic
BeitragVerfasst: Do 06.04.06 13:47 
hey!

habe das .ExecSQL; jetzt wieder reingenommen und bekomme nun folgendes:
Unzulässige SQL-Anweisung; "DELETE","INSERT","SELECT" oder "UPDATE" erwartet.
zur info: ich habe in dieser tabelle eigentlich 6 spalten. ausser die 4, in die hiermit etwas eingefügt werden soll, habe ich noch 2 andere (ID und kunde), von denen ich denke, dass ich sie getrost aus dem sql-befehl weglassen kann?!

scheint so, als wär ich nen schritt weiter ;-) ... leider finde ich den rechtschreibfehler im befehl nicht...

danke übrigens für die hilfe

_________________
Mr.D
Change begins with you - TODAY!
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Do 06.04.06 13:52 
Feldnamen mit Bindestrichen? Meine DB (Oracle) interpretiert das als Rechenoperation. Evtl. helfen Anführungszeichen, bzw. die Funktion QuotedStr.
Lass dir außerdem mal das Statement vor der Ausführung anzeigen. Oft sieht man dann sofort, was da quer läuft.
Anarkids Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 81

Win XP Pro, Freundin
Delphi 2006, C/C++, VisualBasic
BeitragVerfasst: Do 06.04.06 13:54 
ID ist autoinc
kunde ist mit der id (auch autoinc) der tabelle kunde verbunden.

daher hab ich mir so gedacht, wenn sie eh beide autoinc sind lass ich sie lieber aus dem befehl raus.

_________________
Mr.D
Change begins with you - TODAY!
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Do 06.04.06 14:03 
user profile iconAnarkids hat folgendes geschrieben:
ID ist autoinc
kunde ist mit der id (auch autoinc) der tabelle kunde verbunden.

daher hab ich mir so gedacht, wenn sie eh beide autoinc sind lass ich sie lieber aus dem befehl raus.

Das ist auch korrekt. AutoInc-Felder dürfen durch ein Insert nicht gefüllt werden. Wäre auch nicht sonderlich logisch.
Anarkids Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 81

Win XP Pro, Freundin
Delphi 2006, C/C++, VisualBasic
BeitragVerfasst: Do 06.04.06 14:06 
gut, dann hab ich ja mal richtig gedacht. trotzdem find ich sehr merkwürdig, warum er mir dann diesen fehler präsentiert. naja, immerhin ist es jetzt schon ein anderer als vorhin :D

_________________
Mr.D
Change begins with you - TODAY!
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Fr 07.04.06 11:05 
Ich glaube ich habe den Fehler gefunden:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure TForm4.Button4Click(Sender: TObject);
var sSQL: string;
begin
 ADO_Q.Open; // HIER wird der Fehler sein
 try
  ADO_Q.active:=false;
  ADO_Q.sql.clear;
  ADO_Q.sql.add('INSERT INTO SERVERDATEN (SERVERNAME,URL,IP-ADRESSE,SERVICE-LEVEL) values("'+s_edit1+'","'+s_edit1.text+'","'+s_edit2.text+'","'+s_edit3.text+'","'+s_edit5.text+'")');
  ADO_Q.Active:=true;
 finally
  ADO_Q.close;
 end;
end;

Du machst ein Open, bevor du überhaupt ein SQL-Statement hast.
Manchmal sieht man den Wald vor lauter Bäumen nicht. Ich habe mich zu sehr auf das Statement gestürzt. *kopfschüttel*
Anarkids Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 81

Win XP Pro, Freundin
Delphi 2006, C/C++, VisualBasic
BeitragVerfasst: Fr 07.04.06 11:14 
ja genau das müsste er sein. habe den quelltext nun mal geändert:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm4.Button2Click(Sender: TObject);
var server_t;
begin
 server_t := 'select * from Serverdaten where 1 = 0';
 ado_q.close;
 ado_q.sql.text := server_t;
 ado_q.insert;
 ado_q.fieldbyname('Servername').asstring := S_Edit1.text;
 ado_q.fieldbyname('URL').asstring := S_Edit2.text;
 ado_q.fieldbyname('IPAdresse').asstring := S_Edit3.text;
 ado_q.fieldbyname('ServiceLevel').asstring := S_Edit5.text;
 ado_q.post;


das nur mal als beispiel, wie es auch klappen kann ;-)

problem gelöst...danke jasocul.

_________________
Mr.D
Change begins with you - TODAY!