AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Allgemeine Fragen zu Access + Delphi
Thema durchsuchen
Ansicht
Themen-Optionen

Allgemeine Fragen zu Access + Delphi

Offene Frage von "Saulo"
Ein Thema von Saulo · begonnen am 14. Jul 2003 · letzter Beitrag vom 11. Sep 2003
Antwort Antwort
Seite 5 von 7   « Erste     345 67      
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#41

Re: Allgemeine Fragen zu Access + Delphi

  Alt 28. Jul 2003, 08:37
Zitat von Saulo:
... weiß da jemand einen lösungsvorschlag?
Ups... mein Fehler! ABER: Den musst Du selber lösen können.

Tip:

Wer hindert dich daran das alles was in Hochkommas stehen soll in QuotedString zu setzten; nicht nur den Namen aus deinem TEdit!?
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Saulo

Registriert seit: 6. Jun 2003
58 Beiträge
 
Delphi 7 Enterprise
 
#42

Re: Allgemeine Fragen zu Access + Delphi

  Alt 28. Jul 2003, 12:50
hm... sorry aber ich komm echt nicht drauf...?
also die zeile heißt jetzt:

AdoQuery1.SQL.Add('SELECT * FROM TUser WHERE (Vorname LIKE ' +QuotedStr(Form2.edit1.text)+ ')'); 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....

und dann noch was: ich will eine zahl in der tabelle inkremieren (heißt das so? jedenfalls meine ich erhöhen )
also ich öffne dann die query und will den wert in eine variable schreiben:

i := DataModule2.qryUser.FieldByName('wieofteingeloggt').AsInteger; nur dann meckert er, von wegen dass es das feld in der tabelle garnicht gibt... aber das gibts sehr wohl! woran liegts?
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#43

Re: Allgemeine Fragen zu Access + Delphi

  Alt 28. Jul 2003, 13:22
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 von Saulo:
i := DataModule2.qryUser.FieldByName('wieofteingeloggt').AsInteger; nur dann meckert er, von wegen dass es das feld in der tabelle garnicht gibt... aber das gibts sehr wohl! woran liegts?
Hast Du das Feld "wieofteingeloggt" auch in deine SELECT anweisung geschrieben?

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
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Saulo

Registriert seit: 6. Jun 2003
58 Beiträge
 
Delphi 7 Enterprise
 
#44

Re: Allgemeine Fragen zu Access + Delphi

  Alt 28. Jul 2003, 13:46
Zitat von Sharky:
So, jetz musst Du aber mal selber etwas Programmieren
Das versuche ich ja grade verzweifelt.... aber irgednwie wills echt nicht so recht klappen....


Zitat von Sharky:
Delphi-Quellcode:
  ...
  DataModule2.qryUser.SQL.Add('SELECT * FROM TUser WHERE (name LIKE'     
+ QuotedStr ('%' + form1.edit1.text + '%')
   + ')');
ja, so weit war ich auch gekommen, aber est geht mir ja darum, dass der begriff n hochkommas stehen muss. die obige zeile liefert ja nur:
%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 von Sharky:
Hast Du das Feld "wieofteingeloggt" auch in deine SELECT anweisung geschrieben?
Ja habe ich! ich hab aber mal irgendwo gelesen dass ADO-Connetions sehr empfindlich auf veränderungen reagieren...? könnte es vielleicht daran liegen dass ich dieses feld erst nach der verbindung in die tabelle eingefügt habe...?
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#45

Re: Allgemeine Fragen zu Access + Delphi

  Alt 28. Jul 2003, 14:28
Zitat von Saulo:
....die obige zeile liefert ja nur:
%suchbegriff% aber das ganze muss ja noch in hochkommas stehen, also: '%suchbegriff%'
....
Also, bei mir liefert ein:

 QuotedStr ('%' + form1.edit1.text + '%') '%suchbegriff%'

Alternativ kannst Du den SQL-String ja einmal so aufbauen:
Delphi-Quellcode:
DataModule2.qryUser.SQL.Clear;
DataModule2.qryUser.SQL.Text := 'SELECT * FROM TUser WHERE (name LIKE'
   + QuotedStr ('%' + form1.edit1.text + '%')
   + ')';
Ist evenutell etwas übersichtlicher?
Zitat von Saulo:
Ja habe ich! ich hab aber mal irgendwo gelesen dass ADO-Connetions sehr empfindlich auf veränderungen reagieren...? könnte es vielleicht daran liegen dass ich dieses feld erst nach der verbindung in die tabelle eingefügt habe...?
Hast Du womöglich die Felder in dein Query aufgenommer (mit der Rechten Maustaste drauf - FeldEditor - Hinzufügen?
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.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Saulo

Registriert seit: 6. Jun 2003
58 Beiträge
 
Delphi 7 Enterprise
 
#46

Re: Allgemeine Fragen zu Access + Delphi

  Alt 28. Jul 2003, 15:13
puuh... danke! also jetzt hab ichs wenigstens mit der suchfunktion
das nächste problem: warum wird nur die ID des autors angezeigt, obwohl ich seinen namen auslese? also die prozedur ist so:

Delphi-Quellcode:
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;
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!!
  Mit Zitat antworten Zitat
Saulo

Registriert seit: 6. Jun 2003
58 Beiträge
 
Delphi 7 Enterprise
 
#47

Re: Allgemeine Fragen zu Access + Delphi

  Alt 28. Jul 2003, 15:16
oh gott ich bin so hohl.... LOL ich habe die Labels falsch zugewiesen... LOL schande über mein haupt *schaaaaaaaaam*
  Mit Zitat antworten Zitat
Saulo

Registriert seit: 6. Jun 2003
58 Beiträge
 
Delphi 7 Enterprise
 
#48

Re: Allgemeine Fragen zu Access + Delphi

  Alt 28. Jul 2003, 17:08
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:
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;
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?
  Mit Zitat antworten Zitat
Saulo

Registriert seit: 6. Jun 2003
58 Beiträge
 
Delphi 7 Enterprise
 
#49

Re: Allgemeine Fragen zu Access + Delphi

  Alt 28. Jul 2003, 18:06
und dann immer noch das alte problem mit den feldern die nicht erkannt werden
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???
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#50

Re: Allgemeine Fragen zu Access + Delphi

  Alt 29. Jul 2003, 08:20
Zitat von Saulo:
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:
....
Hai,

ersteinmal: ComboBox.ItemIndex beginnt bei 0.

Aus deinen vielen Codezeilen habe ich mal diesen Code gemacht:

Delphi-Quellcode:
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;
Das ist genau das gleiche wie bei dir. Nur kürzer und darum weniger Fehler trächtig

Warum das mit den zusätzlichen Feldern bei dir nicht geht kann ich dir aber beim besten Willen nicht sagen
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 7   « Erste     345 67      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz