![]() |
Datenbank: paradox7 • Zugriff über: table,query
2 kleine problemlichen mit dem Query
also wie shcon im thema erwähnt! ich hab 2 kleine probleme bzw. fragen:
1. kann es sein, dass das mit dem query bezogen auf ne tabelle nicht funktioniert, wenn diese ein memo-feld beinhaltet? hatte da n prob un das mit dem query hat ewig nich geklappt, erst als ich die datensätze mit dem memo entfernt hatte! 2. ich möchte beim query die funktion SELECT * FROM ... WHERE ...=... nutzen. so auf jeden fall soll nach dem WHERE die eine spalte "kategorie" gefiltert werden. der filterwert müsste demnach ja ein string sein un soll aus einer DBLookUpComboBox stammen, also hätt ich mir gedacht das man die zeile so schreiben kann:
Delphi-Quellcode:
bzw.
SELECT * FROM artikel WHERE kategorie=DBLookUpComboBox1.keyvalue
Delphi-Quellcode:
es komtm aber nur die fehlermeldung, "ungültiges schlüsselwort..." ich versteh einfach nich wie ich die abfrage sonst gestalten kann mit der combobox?
begin
Query1.Active:=false; Query1.Sql.Clear; Query1.Sql.Add('SELECT * FROM artikel.db WHERE kategorie=kategorie=DBLookUpComboBox1.keyvalue'); Query1.Active:=true; end; hoffe mir kann jmd helfen! thx schonma im vorraus |
Re: 2 kleine problemlichen mit dem Query
Moin mafiaente,
wie ist es so:
Delphi-Quellcode:
?
Query1.Sql.Add('SELECT * FROM artikel.db WHERE kategorie='+DBLookUpComboBox1.keyvalue);
|
Re: 2 kleine problemlichen mit dem Query
Hallo,
wenn kategorie ein string ist muss er auf jeden Fall in HOchkommata gesetzt werden z.B. so: 'Select * from Artikel where Kategorie = ' + #39 + StringVariable + #39 |
Re: 2 kleine problemlichen mit dem Query
Zitat:
ich benutze imme QuotedStr also:
Delphi-Quellcode:
Moin
'Select * from Artikel where Kategorie = ' + QuotedStr(MeinString);
|
Re: 2 kleine problemlichen mit dem Query
Hallo
Zitat:
|
Re: 2 kleine problemlichen mit dem Query
ok vielen dank füreure schnellen antworten! ich hoffe ich bekomme es jetz hin...
|
Re: 2 kleine problemlichen mit dem Query
Hallo,
die beiden Meinungen zur alternativen Parameterübergabe in SQL-Statements möchte ich trotzdem noch kurz aufgreifen: Zitat:
Zitat:
Delphi-Quellcode:
Ohne QuotedStr() wird kein valides Statement produziert, wenn ein Apostroph Bestandteil der Daten ist.
var
s, x, u: String; begin s := 'Christies''s'; x := #39 + s + #39; // liefert 'Christie's' u := QuotedStr(s); // liefert 'Christie''s' if x <> u then ShowMessage('Lasst euch kein X für ein U vormachen'); end; Freundliche Grüße |
Re: 2 kleine problemlichen mit dem Query
also das mit dem filtern klappt jetz so wie ich das will, aber schon steh ich vor nem neuen problem!
wenn ich in der ausgangstabelle "artikel.db" daten hinzufüge, gibt der query die nich aus! der bleibt immer auf dem einen stand, die neuen daten werden gar nich berücksichtigt...wo is da der fehler? versteht ihr was ich mein? |
Re: 2 kleine problemlichen mit dem Query
Du mußt dem Query sagen, daß er auf Veränderungen reagieren soll, in dem du .RequestLive auf True setzt.
|
Re: 2 kleine problemlichen mit dem Query
Hallo Markus,
RequestLive = True ist eine notwendige Voraussetzung für ein erfolgreiches Query.Refresh() - aber ohne ein Refresh() wird es wohl nicht funktionieren. Freundliche Grüße |
Re: 2 kleine problemlichen mit dem Query
hm hab jetz im objektinspektor auf true gesetz, aber keine veränderung :(
un wo muss ich das query1.refresh hinpacken? |
Re: 2 kleine problemlichen mit dem Query
Zitat:
Freundliche Grüße |
Re: 2 kleine problemlichen mit dem Query
hm wo genau kommt das refresh hin? habs jetz vor der anweisung gemacht, aber geändert hat sich nichts!
hm iwie werden die daten in meiner ausgangstabelle durch den query immer gelöscht, kann das iwie sein? hier nochma der quelltext:
Delphi-Quellcode:
begin
query1.refresh; Query1.Active:=false; Query1.Sql.Clear; Query1.Sql.Add('SELECT * FROM artikel WHERE kategorie='+#39+dblookupComboBox1.keyvalue+#39); Query1.Active:=true; |
Re: 2 kleine problemlichen mit dem Query
Wie fügst du den die Daten ein?
|
Re: 2 kleine problemlichen mit dem Query
die daten füge ich zuvor in einem anderen formular per DBnavigator ein un gelangen auch in die tabelle...also das funktioniert
|
Re: 2 kleine problemlichen mit dem Query
Trage das .Refresh mal in das .AfterPost-Ereignis der Tabelle ein.
|
Re: 2 kleine problemlichen mit dem Query
ich soll bei der komponente TTable bei ereignisse bei AfterPost ".refresh" eingeben? da kommt dann ".refresh ist kein gültiger bezeichner"
hm ich hab bei der query bei datesourceName die datasource ausgewählt die sich auch die ausgangstabelle bezieht! kann das der grund sein, dass die daten dauernd gelöscht werden? sry das ich mich so dumm stelle, aber ich bin noch n ziemlicher anfänger un wäre echt gut wenn ich das noch iwie hinbekommen könnte! thx |
Re: 2 kleine problemlichen mit dem Query
Sorry, ich dachte du wärst mit den Konventionen bekannt.
Ich ließ die Bezeichnung der Klasse weg, da Achim es ja vorher schon erläutert hatte, daß es sich um eine Methode des Queries handelt muß deshalb als Query1.Refresh(); geschrieben werden. |
Re: 2 kleine problemlichen mit dem Query
also wenn ich das im eingabeformular bei den ereingnissen eingabe ändert sich nichts!
der aktuelle stand sieht jetz aber so aus: - die daten werden nicht mehr gelöscht (hab ich nun hinbekommen) - wenn ich daten eingebe liest der query im nächten formular nicht ein (das is das problem) - wenn ich delphi schließe un neu starte hat der query die neuen daten dann aber auf einma! ich hoffe diese kleine sache zur vervollständigung kann mir noch übermittelt werden! danke! |
Re: 2 kleine problemlichen mit dem Query
In Ereignis welcher Komponente hast du den Code eingefügt?
Wo zeigst du die Daten des Queries an? Vielleicht hilft ein
Delphi-Quellcode:
Form.Update;
|
Re: 2 kleine problemlichen mit dem Query
also ich hab das beim ersten formular bei der ttable komponente bei afterpost eignetragen! der query mit ausgabe is dann aufm 2.formular...welches fomular soll ich updaten un an welcher stelle?
|
Re: 2 kleine problemlichen mit dem Query
Na das 2. nach dem .Refresh()
|
Re: 2 kleine problemlichen mit dem Query
Kann es nicht sein, dass bei TableAfterPost() ein Query1.Refresh() eingetragen wurde und damit auf Form1.Query1 verwiesen wurde? Es muss doch Form2.Query1.Refresh() heißen.
Ein Form2.Update() ist nicht nötig, das Aktualisieren der verknüpften visuellen Controls wird bei Query1.Refresh() miterledigt, wenn vorher kein Query1.DisableControls() ausgeführt wurde. Freundliche Grüße |
Re: 2 kleine problemlichen mit dem Query
also an das form 2 hab ich schon gedacht aber es ging halt wie gesagt trotzdem nicht.
auch wenn ich das form1.update im 2.formular unterbringe ändert das nichts an meinem problem :( |
Re: 2 kleine problemlichen mit dem Query
Es ist gar nicht so leicht durch deine Augen zu sehen.
Kannst du dein Projekt (ohne DCU und EXE und backup files) zippen und hier einstellen? Oder zumindest mal die relevanten Teile hier zeigen? |
Re: 2 kleine problemlichen mit dem Query
ok, ich versuche es...
zunächst erkläre ich meine tabellen: Tabelle1: artikel.db beinhaltet u.a. die spalte namens kategorie Tabelle2: kategorie.db beinhaltet die einzelnen kategorien Form1: Eingabe der daten von tabelle1 Form2: Man soll die Kategorie mit Hilfe der DBLookupCombobox, die sich auf tabelle2 beruft, auswählen un mit hilfe des Buttons 'Anzeigen' anzeigen lassen und beinhaltet demnach den query1 beim query ist requestLive:=true gesetzt; für den Button habe ich nun den Quelltext:
Delphi-Quellcode:
in Form1 habe ich außerdem bei der Komponente Table1 das Ereignis 'afterpost' mit
begin
Query1.Active:=false; Query1.Sql.Clear; Query1.Sql.Add('SELECT * FROM artikel WHERE kategorie='+#39+dblookupComboBox1.keyvalue+#39); Query1.Active:=true; end;
Delphi-Quellcode:
belegt
Form2.Query1.Refresh();
Nun das Problem: Ich gebe im Form1 einen neuen Artikel ein, er erscheint auch in der Tabelle1 --> gehe ich aber nun ins Form2 un suche den Artikel über die Kategorie, so wird er nicht gefunden. WICHTIG!!! schließe ich Delphi un öffne das Projekt neu, so finde der Query auf einmal den zuvor eingegebenen Artikel! Ich hoffe das sind jetzt genug infos!!! |
Re: 2 kleine problemlichen mit dem Query
Der Query hängt auch nicht direkt an der Tabelle sondern an einer Lookupkomponente. Mit was ist sie verbunden?
|
Re: 2 kleine problemlichen mit dem Query
bei der query hab ich bei DatabaseName das verzeichnis, welches die tabellen beinhaltet! die datasource hab ich freigelassen und der bezug zu lookupcpmbobox is lediglich durch die filteranweisung
Delphi-Quellcode:
muss zum start des programms der query.active true oder false sein? true oder, weil sonst das refresh beim post nicht geht,oder?
Query1.Sql.Add('SELECT * FROM artikel WHERE kategorie='+#39+dblookupComboBox1.keyvalue+#39)
|
Re: 2 kleine problemlichen mit dem Query
Mit was ist die LookUp-Komponente verknüpft?
|
Re: 2 kleine problemlichen mit dem Query
mit der ListSource4 (bezieht sich auf die Kategorie tabelle) un ListField (kategorie)
datasource un so is frei |
Re: 2 kleine problemlichen mit dem Query
Und wie hast du dann die Inhalte der Liste gesetzt?
|
Re: 2 kleine problemlichen mit dem Query
naja wie gesagt, da ich listsource auf meine kategorie-tabelle gesetzt hab, stehen in der komponente bei der ausführung all meine 10 kategorien! wenn ich dann eine auswähle un auf den Button klicke, so kommen alle artikel der entsprechenden kategorie, außer die, die ich siet dem start von delphi eingegeben habe! das is ja das komische! alles funktioniert ja, außer die neu eingegebenen artikel
|
Re: 2 kleine problemlichen mit dem Query
Ich würde die Lookup-ComboBox direkt mit dee Datenquelle von Query1 verknüpfen . Die Abfrage entsprechend anpassen:
Delphi-Quellcode:
und im onChange der Box:
Query1.Sql.Add('SELECT * FROM artikel WHERE kategorie=:kat');
Delphi-Quellcode:
Query1.ParamNyName('kat').value := Table1.FieldBynName('Kategorie').Value;
Query1.Refresh(); |
Re: 2 kleine problemlichen mit dem Query
also danke nochma für den tipp, aber bei meiner DBLookupcombobox gibt es kein OnChange...wenn ich es bei OnClick mache, dann kommt dass der parameter'kat' nicht gefunden werden kann...
ich würde ja auch die normales combobox nehmen, bei der es OnChange gibt, aber da weiß ich wiederrum nicht wier ich die Kategorien eingelsen bekomme!? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:56 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 by Thomas Breitkreuz