Entwickler-Ecke
Datenbanken - Daten einfügen mit Insert ... "Ungültiger Dateiname&qu
peppi - Fr 29.11.02 12:55
Titel: Daten einfügen mit Insert ... "Ungültiger Dateiname&qu
Hallo,
wiedermal ich :lol:
versuche krampfhaft Daten in meine DB einzufügen. Hierfür sollen die Daten aus verschiedenen Edit-Feldern genommen werden. Das soll über eine Query laufen wenn ich auf einen Button klicke... der Quellcode hierfür:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| procedure TForm2.Button1Click(Sender: TObject); begin with Query2 do begin close; with SQL do begin clear; ADD ('insert into tabelle'); ADD ('(NUMMER)'); ADD ('values (' + QuotedStr(Edit1.Text)+')'); end; query2.open; end; end; |
Also wie man sieht, soll aus Edit1 der Text genommen werden und in die DB eingefügt werden. Probeweise hab ich's erstmal nur für ein Feld gemacht. Wenn ich jetzt auf den Button klicke bekomme ich immer die Fehlermeldung:
"Ungültiger Dateiname" ... womit könnte das zusammenhängen?? Ich flipp noch aus :autsch:
Wenn ihr mehr wissen müsst einfach fragen ... bin über jede Hilfe dankbar :wink:
LG Jana!
LCS - Fr 29.11.02 13:00
Hi
Wenn die SQL Anweisung deiner Query keine Ergebnismenge liefert (Insert, Update usw.) musst du anstelle von Open die Methode ExecSQL aufrufen.
Gruss Lothar
peppi - Fr 29.11.02 13:13
Hi Lothar,
wäre ja zu schön gewesen :(
Ich hab jetzt einfach das open durch ExecSQL ersetzt ... mehr nich. So meintest du das doch oder?? Bekomme aber den gleichen Fehler bei ButtonClick.
vielleicht muss ich etwas genauer werden. Die Query2, die das insert ja ausführen soll, habe ich mit einer DataSource1 verbunden. In dieser ist Dataset = Query1. Und mit dieser Query1 selektiere ich schon im Vorfeld Daten. Die Daten werden dann in verschiedenen DBEditFeldern angezeigt. Das klappt auch ... seh ja die Daten. Aber kann das manchmal auch an dieser Verbindung liegen?? Will jetzt hier erstmal nich den ganzen Quellcode einstellen :lol:
LG Jana!
LCS - Fr 29.11.02 13:16
Nochmal ich.
Dass deine Tabelle auch tatsächlich Tabelle heisst, davon gehe ich mal aus :wink:, aber du solltest ausserdem sicherstellen, dass zwischen den einzelnen Wörtern deiner SQL tatsächlich leerzeichen stehen:
Quelltext
1: 2: 3:
| ADD ('insert into tabelle'); ADD (' (NUMMER)'); //1. Zeichen Space ADD (' values (' + QuotedStr(Edit1.Text)+')'); //1. Zeichen Space |
Gruss Lothar
peppi - Fr 29.11.02 13:34
Ist es nicht so das mit ADD auch eine neue Zeile im SQL beginnt?? Das dachte ich jedenfalls immer, dann bräuchte ich doch auch kein Leerzeichen?? Ich finde in der Online-Hilfe auch nicht wirklich was darüber ... Leerzeichen sind klar ... ' ' ...aber so meintest du das doch bestimmt nicht oder??
LCS - Fr 29.11.02 13:55
Hi
Zitat: |
Ist es nicht so das mit ADD auch eine neue Zeile im SQL beginnt??
|
Das schon, aber wenn die SQL-Anweisung an die Datenbank übergeben wird, igoniert die einfach den Zeilenumbruch und dann kleben die einzelnen Wörter direkt aneinander.
Irgendwie haben sich vorhin unsere Beiträge überschnitten. Welche Query verwendest du denn jetzt um die Daten anzuzeigen? Wenn du versuchst dieselbe Query zum Anzeigen und zum Löschen zu verwenden, müsstest du ja nach dem Löschen wieder die SQL-Anweisung für die Anzeige erstellen.
Wenn du die Query2 nur zum löschen verwendest, dann würde ich den Eintrag in DataSource mal rausnehmen. Ich weiss zwar nicht, ob das nun konkret was ausmacht, aber sinnlos ist es auch jeden Fall, da du die zu löschenden Sätze ja sowieso per SQL selektierst.
Gruss Lothar
peppi - Fr 29.11.02 14:14
Hab den Eintrag jetzt mal raus genommen ... selbe Fehlermeldung ... ich kopier jetzt mal den ganzen Quellcode ... ist dann vielleicht einfacher :lol:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77:
| procedure TForm2.FormCreate(Sender: TObject); begin Session.GetAliasNames(ComboBox1.Items); end;
procedure TForm2.ComboBox1Change(Sender: TObject); begin Database1.Close; query1.Active := false; With ComboBox1 Do If DataBase1.AliasName = ComboBox1.Items[ItemIndex] then Exit else begin Database1.AliasName := ComboBox1.Items[ItemIndex] end; with Query1 do begin close; with SQL do begin clear; ADD('select * from tabelle2'); ADD('where NUMMER LIKE ' + QuotedStr(Edit2.Text + '%')); ADD('and NUMMER2 LIKE ' + QuotedStr(Edit1.Text + '%')); Add ('order by NUMMER'); end; Query1.DatabaseName := Database1.AliasName; Query1.Active := True;
end; end;
procedure TForm2.Edit2KeyPress(Sender: TObject; var Key: Char); begin if not (key in ['0'..'9',#8,'.','-']) then Key := #0; with Query1 do begin close; with SQL do begin clear; ADD('select * from tabelle2'); ADD('where NUMMER LIKE ' + QuotedStr(Edit2.Text + '%')); ADD('and NUMMER2 LIKE ' + QuotedStr(Edit1.Text + '%')); Add ('order by NUMMER'); end; Query1.Open; end; end;
procedure TForm2.Edit2Enter(Sender: TObject); begin with Query1 do begin close; with SQL do begin clear; ADD('select * from tabelle2'); ADD('where NUMMER LIKE ' + QuotedStr(Edit2.Text + '%')); ADD('and NUMMER2 LIKE ' + QuotedStr(Edit1.Text + '%')); Add ('order by NUMMER'); end; Query1.Open; end; end;
procedure TForm2.Button1Click(Sender: TObject); begin with Query2 do begin close; with SQL do begin clear; ADD ('insert into tabelle'); ADD ('(NUMMER2)'); ADD ('values (' + QuotedStr(Edit1.Text)+')'); end; query2.ExecSQL; end; end; end. |
Die SQL-Anweisung muss bestimmt nich in jede Prozudur rein :lol: das wollt ich noch ändern, also einfach nicht drauf achten (es sei denn, es hat mit dem Fehler zu tun :) )
Natürlich heißen meine tabellen nicht tabelle1 und tabelle, das hab ich nur wegen Datenschutz geändert, in MEINEM Quellcode sind die richtig.
So, hoffe du kannst damit was anfangen!!
LG Jana!
Udontknow - Fr 29.11.02 14:15
Hi.
Kannst du Daten per Select durch eine weitere DS und deiner Query2 einfach in einem Grid anzeigen lassen? Die Fehlermeldung klingt ja so, als ob evtl die DB-Einstellung inkorrekt ist, und beim Öffnen der Query wird ja evtl. auch erst die DB geöffnet... Also, vielleicht mal den databasename in Query2 checken...
Cu,
Udontknow
peppi - Fr 29.11.02 14:20
@ udontknow
das war's ... hab die ausgewählte DB nicht zugeordnet... :lol: dachte die Zuordnung von DataSource1 würde da reichen he he
Dank dir!!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!