Entwickler-Ecke
Datenbanken - Gespeicherte SQL-Datei nutzen/aufrufen
Miephos - Di 11.03.03 23:11
Titel: Gespeicherte SQL-Datei nutzen/aufrufen
Ich habe mit der Datenbankoberfläche ein paar SQL-Datei erstellen wollen. Schon bei dem Erstellen fuktioniert einiges nicht.
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| Select Mitglieder, Personen
From Register
Order By Personen |
Ich habe die Datei genau in dem Verzeichnis gespeichert in dem die Tabelle ist, wenn ich aber auf "SQL-Ausführen" clicke kommt der Fehler "kann Tabelle nicht finden". versteh ich nicht????
Selbst wenn ich die Datei nun habe, wie kann ich die Abfrage starten?? Welchen Code brauche ich damit dies passiert was ich eigentlich in das SQL geschrieben habe.
Newbie-Frage ich weiß, bin aber erst noch beim lernen.
CU Miephos
infomio - Di 11.03.03 23:41
Erzähl mal: was für ne Datenbank? wie schauts mit deinem Quellcode aus?
welche Komponenten verwendest du?
infomio - Di 11.03.03 23:46
Titel: sorry
ich habs missverstanden... du arbeitest nur mit der Datenbankoberfläche.
Der Fehler kommt nicht,wenn du einen Eintrag in der BDE hast und dann den Alias auswählst.
bis11 - Mi 12.03.03 08:59
Ich nehme mal an, dass Du für Deine Paradox-Datenbank keinen Alias vergeben hast. Deshalb musst Du Dein Script ungefähr so ändern :
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| Select Mitglieder, Personen
From "C:\Test\Register.db"
Order By Personen |
Für C:\Test gibst Du halt Dein Verzeichnis ein, wo Deine DB abgelegt ist.
kiwicht - Mi 12.03.03 09:09
Hallöle..
geht auch anders, ohne Aliase, und ohne das ich jedesmal den kompletten Pfad eingeben muss:
Einfach deiner Query-Eigenschaft "DATABASENAME" das Verzeichnis zuordnen, in dem deine DB liegt (NUR das Verzeichnis -> ExtractFilePath!)
Und dann, in deinen SQL-Anweisungen, reichts wenn du den DB-Namen selber angibst, ohne Endung, also so wie du es hattest:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| 1. Query.DataBaseName := 'C:\Datenbanken';
2. Select Mitglieder, Personen
From Register
Order By Personen
(Register steht in diesem Fallle für deine DB, also register.db!) |
mfg
bis11 - Mi 12.03.03 09:11
Titel: Re: Gespeicherte SQL-Datei nutzen/aufrufen
Miephos hat folgendes geschrieben: |
Ich habe mit der Datenbankoberfläche ein paar SQL-Datei erstellen wollen. Schon bei dem Erstellen fuktioniert einiges nicht. |
Kiwicht, hast Du das gelesen ? Er ist noch nicht beim programmieren in Delphi.
Moderiert von
Tino: Quote-Tag geschlossen.
kiwicht - Mi 12.03.03 09:16
hm, kennt ihr das berühmte "neiiiiin" von homer? das ist jetzt angebracht...
sorry.. :oops:
Miephos - Mi 12.03.03 23:13
Ich benutzt die BDE von Borland. Das mit dem Pfad habe ich verstanden, aber was immer noch mein Problem ist, wei ich die abgespeicherten SQL-Dateien nutzen kann.
Ich schreibe ein SQL:
Quelltext
1: 2: 3: 4: 5:
| Select Mitarbeiter, Raum From Kunden |
dies speichere ich unter
abfrage1.sql ab, wie kann ich nun die Abfarage in den Quelltext einbinden und abfargen???? So könnte man sich ein kleine Sammlung an SQLDateien anlegen, und so brauche ich sie nur laden, und gut ist.
Cu Miephos
hansa - Do 13.03.03 00:12
Miephos hat folgendes geschrieben: |
Ich benutzt die BDE von Borland. Das mit dem Pfad habe ich verstanden, aber was immer noch mein Problem ist, weil ich die abgespeicherten SQL-Dateien nutzen kann.
Ich schreibe ein SQL:
Quelltext 1: 2:
| Select Mitarbeiter, Raum From Kunden | |
Brauche Informationen über die verwendeten Komponenten.
Moderiert von
Marc: Quote-Tag geschlossen.
bis11 - Do 13.03.03 07:22
Du musst in Deinem Programm ein TDBgrid, TDatasource, TQuery Komponenten ziehen. Diese drei verknüpft du miteinander und schreibst dann folgenden Code in ein ButonClick rein :
Quelltext
1: 2: 3: 4: 5:
| with query1 do begin Sql.Clear; Sql.LoadFromFile('C:\Abfrage1.Sql'); Open; end; |
So dann wird Deine SQL-Datei ausgeführt und die Daten aus der Tabelle in einen DBGrid angezeigt.
kiwicht - Do 13.03.03 09:34
Gibt es denn auch die Möglichkeit, in einer Datei mehrere SQL-Anweisungen zu speichern, um dann aus diesen eine Auszuwählen?
(Ähnlich dem INI-Prinzip also.)
bis11 - Do 13.03.03 09:41
Sowas ist mir jetzt nicht bekannt. Dann musst Du die SQL-Befehle in eine INI-Datei schreiben.
Miephos - Do 13.03.03 10:29
Damit ist mir doch schon geholfen. vielen Dank.
Cu Miephos
kiwicht - Do 13.03.03 15:36
bis11 hat folgendes geschrieben: |
Sowas ist mir jetzt nicht bekannt. Dann musst Du die SQL-Befehle in eine INI-Datei schreiben. |
um darauf nochmal zurückzukommen, ich hoffe das liest jetzt noch einer :roll: .... und zwar klappts mit INI´s doch auch nur über den Umweg mit Variablen, oder?
Hab nämlich folgendes gemacht:
Zitat: |
QueryFirmendt.SQL.Text := ini.ReadString('firmendt','unfilter',''); |
und das geht nicht: "Keine SQL-Anweisung gefunden!".
... Vermutung liegt nahe: Muss erst aus der INI-Lesen, in einer Variable speichern und dann dem SQL-Text zuweisen. Das ist aber schon wieder zu umständlich. Kann ich die SQL-Anweisung nicht direkt übergeben, so wie bei SQL.LoadFromFile??
mfg
der kiwicht
bis11 - Do 13.03.03 15:44
Da hat er probleme mit der Konvertierung. Was ist wenn Du es vor in eine String-Variable schreibst ?
kiwicht - Do 13.03.03 15:48
jepp, hatt ich gerade probiert... geht auch nicht. Gleiche Fehler. Dann bleib ich wohl erst mal bei der statischen Angelegenheit... Schwamm düber und trotzdem danke... :)
bis11 - Do 13.03.03 16:16
Probiere mal bitte folgendes aus :
Quelltext
1:
| QueryFirmendt.SQL.Add := ini.ReadString('firmendt','unfilter',''); |
Und auch eventuell falls es nicht funktioniert nochmal mit einer Variable.
kiwicht - Do 13.03.03 19:43
Hi Bis11,
nimms mir nich übel, aber ich glaub das brauch ich nicht ausprobieren, weil muss es, wenn, dann so heißen:
SQL.Add (' ..... ');
bzw
SQL.Text := ('.....');
Oder meintest du Text? Jedenfalls hab ich jetzt alles durch, einmal mit Add, mit Text und mit "Variable davor deklarieren".... geht alles nicht.
Vielleicht liegt es daran, wie die Variablen aus der INI-Datein übernommen werden??
mfg / thx
kiwicht
bis11 - Do 13.03.03 20:37
Ganz dickes Sorry, ich habe etwas vergessen :oops:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TForm1.Button1Click(Sender: TObject); var ini : TIniFile; begin ini := TIniFile.Create('C:\test.ini'); with ADOQuery1 do begin Sql.Clear; Sql.Add(ini.ReadString('TEST','Test1','')); Sql.SaveToFile('C:\Test.sql'); <--- zum nachkontrollieren ob er es richtig macht Open; <--- siehe Ini-File end; end; |
Meine Test.ini Datei :
Zitat: |
[TEST]
Test1=SELECT * FROM anwendungen;
|
So funktioniert es jetzt, er übergibt richtig die SQL-Anweisung. Ich hatte die Klammern vergessen.
kiwicht - Fr 14.03.03 00:48
np
sieht erstmal vielversprechend aus, werd ich gleich morgen früh probieren, nur eine Frage:
Sql.SaveToFile('C:\Test.sql');
Zum Nachprüfen? Sehe ich das richtig das hier die Ergebnis-Menge gespeichert wird? Wenn ja, wozu dann, da ich die Ergebnis-Menge doch eh im Grid (...) anzeigen lasse? :?
danke erstma,
mfg
bis11 - Fr 14.03.03 08:42
Da wird nicht die Ergebnismenge gespeichert sondern Dein SQL-Skript.
kiwicht - Fr 14.03.03 09:49
äh, klar, logisch eigentlich
LoadFromFile <-> SaveToFile ... egal ;D
Aaaalso, zu deinem Script:
Daaaaaaankäääää! :D funzt,
und der Fehler lag in der "Addressierung" meiner SQL-Text.InI, erst mit absoluter Addressierung wie bei dir (c:\sql-text.ini) findet er die Datei auch...
thx nochma
mfg
kiwicht
// edit:
btw:
relative Adressierung wäre dann so:
.\sql-text.ini -> Datei liegt im aktuellen Verzeichnis, also da wo das Programm gerade ausgeführt wird...
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!