Autor |
Beitrag |
Anarkids
      
Beiträge: 81
Win XP Pro, Freundin
Delphi 2006, C/C++, VisualBasic
|
Verfasst: 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
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: 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 
      
Beiträge: 81
Win XP Pro, Freundin
Delphi 2006, C/C++, VisualBasic
|
Verfasst: 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:
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 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
      
Beiträge: 200
Erhaltene Danke: 5
Windows 7, Windows 8.1
Delphi XE
|
Verfasst: 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:
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 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 
      
Beiträge: 81
Win XP Pro, Freundin
Delphi 2006, C/C++, VisualBasic
|
Verfasst: 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
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
      
Beiträge: 792
Erhaltene Danke: 49
Windows 7 / 10; CentOS 7; LinuxMint
Delphi 7-XE10.1, VS 2015
|
Verfasst: 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 
      
Beiträge: 81
Win XP Pro, Freundin
Delphi 2006, C/C++, VisualBasic
|
Verfasst: 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
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: 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 
      
Beiträge: 81
Win XP Pro, Freundin
Delphi 2006, C/C++, VisualBasic
|
Verfasst: 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
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Do 06.04.06 14:03
Anarkids 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 
      
Beiträge: 81
Win XP Pro, Freundin
Delphi 2006, C/C++, VisualBasic
|
Verfasst: 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 
_________________ Mr.D
Change begins with you - TODAY!
|
|
jasocul
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Fr 07.04.06 11:05
Ich glaube ich habe den Fehler gefunden:
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; |
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 
      
Beiträge: 81
Win XP Pro, Freundin
Delphi 2006, C/C++, VisualBasic
|
Verfasst: Fr 07.04.06 11:14
ja genau das müsste er sein. habe den quelltext nun mal geändert:
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!
|
|
|