![]() |
Re: Allgemeine Fragen zu Access + Delphi
Zitat:
Tip: Wer hindert dich daran das alles was in Hochkommas stehen soll in QuotedString zu setzten; nicht nur den Namen aus deinem TEdit!? |
Re: Allgemeine Fragen zu Access + Delphi
hm... sorry aber ich komm echt nicht drauf...? :oops:
also die zeile heißt jetzt:
Delphi-Quellcode:
und ins editfeld schreib ich dann: '%suchbegriff%' (was natürlich nicht so bleiben kann), aber dann krieg ich gar kein suchergebnis... ist echt zum verzweifeln.... :?
AdoQuery1.SQL.Add('SELECT * FROM TUser WHERE (Vorname LIKE ' +QuotedStr(Form2.edit1.text)+ ')');
und dann noch was: ich will eine zahl in der tabelle inkremieren (heißt das so? jedenfalls meine ich erhöhen :wink: ) also ich öffne dann die query und will den wert in eine variable schreiben:
Delphi-Quellcode:
nur dann meckert er, von wegen dass es das feld in der tabelle garnicht gibt... aber das gibts sehr wohl! woran liegts?
i := DataModule2.qryUser.FieldByName('wieofteingeloggt').AsInteger;
|
Re: Allgemeine Fragen zu Access + Delphi
Schaue dir mal diesen Code an. Schaue dir mal genau an was in QuotedStr steh.
Delphi-Quellcode:
DataModule2.qryUser.Close;
DataModule2.qryUser.SQL.Clear; DataModule2.qryUser.SQL.Add('SELECT * FROM TUser WHERE (name LIKE' + QuotedStr ('%' + form1.edit1.text + '%') + ')'); DataModule2.qryUser.Open; Zitat:
Ein SELECT gibt dir nur die Felder wieder die Du anforderst. z.B.:
SQL-Code:
SELECT name FROM TUser //gibt nur das Feld name zurück
SELECT name,vorname FROM TUser //gibt name und vorname zurück SELECT name,vorname, wieofteingeloggt //gibt halt diese drei Felder zurück SELECT * FROM TUser //gibt alle Felder zurück So, jetz musst Du aber mal selber etwas Programmieren :-) |
Re: Allgemeine Fragen zu Access + Delphi
Zitat:
Zitat:
%suchbegriff% aber das ganze muss ja noch in hochkommas stehen, also: '%suchbegriff%' mit der obigen zeile kann er absolut nix anfangen, liefert also auch keine suchergebnisse... Zitat:
|
Re: Allgemeine Fragen zu Access + Delphi
Zitat:
Delphi-Quellcode:
'%suchbegriff%'
QuotedStr ('%' + form1.edit1.text + '%')
Alternativ kannst Du den SQL-String ja einmal so aufbauen:
Delphi-Quellcode:
Ist evenutell etwas übersichtlicher?
DataModule2.qryUser.SQL.Clear;
DataModule2.qryUser.SQL.Text := 'SELECT * FROM TUser WHERE (name LIKE' + QuotedStr ('%' + form1.edit1.text + '%') + ')'; Zitat:
Wenn ja... dann ist das der Fehler. Versuche das so weit wie möglich zu vermeiden. Das ist nämlich wie ein zusätzlicher "Filter" deiner Felder. Wenn dort ein oder mehr Felder drinnen stehen kannst Du selbst mit einem SELECT * FROM tabelle nur auf die Felder zugreifen die Du dort angegeben hast. Ich trage dort nie etwas ein. |
Re: Allgemeine Fragen zu Access + Delphi
puuh... danke! also jetzt hab ichs wenigstens mit der suchfunktion :D
das nächste problem: warum wird nur die ID des autors angezeigt, obwohl ich seinen namen auslese? also die prozedur ist so:
Delphi-Quellcode:
jetzt wird aber in dem Label 'Autor' nur die ID angezeigt und da wo die ID stehen sollte steht garnix.... der titel und der status werden korrekt angezeigt... also das kann ich mir wirklich beim besten willen nicht erklären!!
rocedure TForm2.Button2Click(Sender: TObject);
var l,n : integer; ausgeliehen : boolean; begin AdoQuery1.Close; AdoQuery1.SQL.Clear; AdoQuery1.SQL.Text := 'SELECT * FROM TTitelaufnahme WHERE (Autor LIKE' + QuotedStr ('%' + form2.edit1.text + '%') + ')'; AdoQuery1.Open; l := ADOQuery1.RecordCount; form2.label8.Caption := 'Ihre Suchanfrage ergab '+inttostr(l)+' Treffer!'; form2.Label4.Caption := AdoQuery1.FieldByName('autor').AsString; form2.Label5.Caption := AdoQuery1.FieldByName('titel').AsString; n := AdoQuery1.FieldByName('id').AsInteger; form2.Label4.Caption := inttostr(n); ausgeliehen := AdoQuery1.FieldByName('ausgeliehen').AsBoolean; if ausgeliehen then begin form2.label19.Caption := 'ausgeliehen'; form2.Label19.Font.Color := clRed; end else begin form2.Label19.Caption := 'verfügbar'; form2.Label19.Font.Color := clLime; end; end; |
Re: Allgemeine Fragen zu Access + Delphi
oh gott ich bin so hohl.... LOL ich habe die Labels falsch zugewiesen... LOL schande über mein haupt *schaaaaaaaaam* :mrgreen:
|
Re: Allgemeine Fragen zu Access + Delphi
ja gut, also nächste frage.... wie greift man auf den index einer combobox zu? also mit einer ComboBox soll die suchgenauigkeit bestimmt werden, die items sind in dieser reihenfolge reingeschrieben:
genau ähnlich nur Anfang nur Endung der Quelltext dazu sieht so aus:
Delphi-Quellcode:
nur irgendwie findet er nur bei 'nur Anfang' (also wie ich denke index 3) was. des weiteren soll durch eine weitere ComboBox bestimmt werden ob nach Autor oder Titel gesucht werden soll. Wie kriege ich nun den zum Index gehörigen String, so dass ich es in die Abfrage einbauen kann?
if form2.ComboBox2.ItemIndex = 2
then begin AdoQuery1.Close; AdoQuery1.SQL.Clear; AdoQuery1.SQL.Text := 'SELECT * FROM TTitelaufnahme WHERE (Autor LIKE' + QuotedStr ('%' + form2.edit1.text + '%') + ')'; AdoQuery1.Open; end; if form2.ComboBox2.ItemIndex = 1 then begin AdoQuery1.Close; AdoQuery1.SQL.Clear; AdoQuery1.SQL.Text := 'SELECT * FROM TTitelaufnahme WHERE (Autor LIKE' + QuotedStr (form2.edit1.text) + ')'; AdoQuery1.Open; end; if form2.ComboBox2.ItemIndex = 3 then begin AdoQuery1.Close; AdoQuery1.SQL.Clear; AdoQuery1.SQL.Text := 'SELECT * FROM TTitelaufnahme WHERE (Autor LIKE' + QuotedStr (form2.edit1.text + '%') + ')'; AdoQuery1.Open; end; if form2.ComboBox2.ItemIndex = 4 then begin AdoQuery1.Close; AdoQuery1.SQL.Clear; AdoQuery1.SQL.Text := 'SELECT * FROM TTitelaufnahme WHERE (Autor LIKE' + QuotedStr ('%' + form2.edit1.text) + ')'; AdoQuery1.Open; end; |
Re: Allgemeine Fragen zu Access + Delphi
und dann immer noch das alte problem mit den feldern die nicht erkannt werden :cry:
keine ahnung was ich noch machen soll, also mit der query habe ich nichts gemacht, nichts hinzugefügt... jetzt habe ich delphi geschlossen und ein ersatzfeld gemacht in access, delphi wieder gestartet... genau das gleiche.... woran kanns denn noch liegen??? |
Re: Allgemeine Fragen zu Access + Delphi
Zitat:
ersteinmal: ComboBox.ItemIndex beginnt bei 0. Aus deinen vielen Codezeilen habe ich mal diesen Code gemacht:
Delphi-Quellcode:
Das ist genau das gleiche wie bei dir. Nur kürzer und darum weniger Fehler trächtig :lol:
begin
AdoQuery1.Close; AdoQuery1.SQL.Clear; AdoQuery1.SQL.Text := 'SELECT * FROM TTitelaufnahme WHERE (Autor LIKE'; Case form2.ComboBox2.ItemIndex of begin 0 : AdoQuery1.SQL.Add (QuotedStr (form2.edit1.text)); 1 : AdoQuery1.SQL.Add (QuotedStr ('%' + form2.edit1.text + '%')) 2 : AdoQuery1.SQL.Add (QuotedStr (form2.edit1.text + '%')) 3 : AdoQuery1.SQL.Add (QuotedStr ('%' + form2.edit1.text)) end; AdoQuery1.SQL.Add (')'); AdoQuery1.Open; end; Warum das mit den zusätzlichen Feldern bei dir nicht geht kann ich dir aber beim besten Willen nicht sagen :| |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:54 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-2025 by Thomas Breitkreuz