AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Datenbankeinträge in ComboBoxen zur Anzeige bringen.
Thema durchsuchen
Ansicht
Themen-Optionen

Datenbankeinträge in ComboBoxen zur Anzeige bringen.

Ein Thema von Jens Hartmann · begonnen am 23. Mär 2009 · letzter Beitrag vom 1. Apr 2009
Antwort Antwort
Seite 3 von 4     123 4      
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#21

Re: Datenbankeinträge in ComboBoxen zur Anzeige bringen.

  Alt 26. Mär 2009, 06:44
Es gibt kein Last, aber First mit umgekehrter Sortierung
SELECT FIRST 5 * FROM MB256PLUS WHERE EREIGNIS = Einbruch order by id desc;
Zitat:
Ich denke mir nur, wenn da alle 10 Sek. ein neuer Datensatz kommt, ob es da Sinnvoll ist die Query halt jedesmal auf´s neue abzufragen.
Ein Refresh sollte reichen. Entwdeder Zeitgesteuert oder als Event bei Insert ( durch Trigger)
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#22

Re: Datenbankeinträge in ComboBoxen zur Anzeige bringen.

  Alt 26. Mär 2009, 06:56
Also stehe des DESK für umgekehrte Sortierung. Dann muss ich es dann mal damit versuchen. Aber welche Komponente nehme ich den dann jetzt am besten zur Anzeige.

Ich denke mir das mittlerweile so...

Ich nutze die vorhanden TZConnection, da die Bearbeitung ja auch nur in dem Fall passieren muss, wenn eh Datenverkehr vorhanden ist.

Ich nehme aber eine neue TZQuery, die ich mit der vorhanden TZConnection verbinde.

In diese Query, packe ich den SQLCode, und binde an diese Query eine DataSource an.

Dann nehme ich eine DBComboBox und Verbinde diese mit dem richtigen Feld der DataSource.

Für die anderen InfoBoxen, nutze ich die selbe Query, und passe nur den jeweiligen SQL-Code an.

Ich denke daran werde ich mich später noch setzten. Danke aber schon mal für die vielen antworten.

Gruß Jens
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#23

Re: Datenbankeinträge in ComboBoxen zur Anzeige bringen.

  Alt 31. Mär 2009, 15:29
Hallo,

so habe das jetzt mal soweit umgebaut, leider bin ich für SQL glaube ich zu doof. Aber Gott sei Dank, habe ich mir ja jetzt ein Buch dazu bestellt.

Es wäre aber trotzdem schön, wenn ihr mir schon mal weiter helfen könntet. Ich habe die Abfrage jetzt über die QUERY gemacht, und erstmal nur nach Ereignis = Einbruch gefragt. Doch leider bekomme ich da schon unten Angehangenen Fehler.

Delphi-Quellcode:
      with QryMB256PLUS do begin
      QryMB256PLUS.SQL.Clear;
      QryMB256PLUS.SQL.Text := 'SELECT FIRST 5 * FROM MB256PLUS WHERE Ereignis = Einbruch';
      QRYMB256PLUS.Open;
      while Not eof do
      begin
        CBAlarme.Items.Add(FieldByName('Ereignis').AsString);
        QryMB256PLUS.Next;
      end;
      QryMB256PLUS.Active := false;
      QryMB256PLUS.Close;
      end;
      CBAlarme.ItemIndex := 1;
Miniaturansicht angehängter Grafiken
fehler_832.gif  
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.292 Beiträge
 
Delphi 12 Athens
 
#24

Re: Datenbankeinträge in ComboBoxen zur Anzeige bringen.

  Alt 31. Mär 2009, 15:47
Hallo...

der Fehler sagt zwar daß das Feld EREIGNIS nicht vorhanden ist. Ich tippe aber eher auf Syntaxprobleme, da ich dir zutraue, zu überprüfen, daß das Feld wirklich in der Tabelle vorhanden ist.

probier es mal mit Parametern:
Delphi-Quellcode:
with QryMB256PLUS do begin
      QryMB256PLUS.SQL.Clear;
      QryMB256PLUS.SQL.Text := 'SELECT FIRST 5 * FROM MB256PLUS WHERE EREIGNIS = :Ereignis';
      QryMB256PLUS.ParamByName('Ereignis').asString:= 'Einbruch';
      QRYMB256PLUS.Open;
      while Not eof do
      begin
        CBAlarme.Items.Add(FieldByName('Ereignis').AsString);
        QryMB256PLUS.Next;
      end;
      QryMB256PLUS.Active := false;
      QryMB256PLUS.Close;
      end;
      CBAlarme.ItemIndex := 1;
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#25

Re: Datenbankeinträge in ComboBoxen zur Anzeige bringen.

  Alt 31. Mär 2009, 15:54
Habe ich eben ach schon mal probiert, ich habe auch schon mal so einen ähnlichen Fehler geabt. Und zwar lag es da an den Feldnamen, wenn man auf die Query einen Doppelklick macht (Felder hinzufügen). Ich denke, das der Fehler was ganz einfaches ist, nur ich versteh das noch nicht.

Trotzdem danke.

Habe übrigens deinen geposteten Code auch noch ausprobiert. Aber wie schon gesagt, mit dem selben Fehler.

Gruß Jens.
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.292 Beiträge
 
Delphi 12 Athens
 
#26

Re: Datenbankeinträge in ComboBoxen zur Anzeige bringen.

  Alt 31. Mär 2009, 16:02
Zitat:
wenn man auf die Query einen Doppelklick macht (Felder hinzufügen).
brauchst du nicht. Die Felder werden durch das Open eingelesen. hast du vieleicht noch eine Sortierung in der Query eingetragen welche bei leerer Query auch ein fehlendes Feld anmeckert ?

PS: obigen Code verwende ich hunderte male schmerzfrei. Das Problem liegt nicht an der Query.

Auch zur richtigen Datenbank verbunden und nicht vieleicht Testdatenbank wo einige Felder fehlen ?

  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#27

Re: Datenbankeinträge in ComboBoxen zur Anzeige bringen.

  Alt 31. Mär 2009, 18:54
Zitat:
brauchst du nicht. Die Felder werden durch das Open eingelesen. hast du vieleicht noch eine Sortierung in der Query eingetragen welche bei leerer Query auch ein fehlendes Feld anmeckert ?
Ich weiß, ich hatte mal am Anfang dort Felder eingetragen, wodurch dann ein so ähnlicher Fehler entstanden ist.

Was meinst Du mit sonstiger Sortierung. Hier mal der komplette Code. Im oberen Bereich Frage ich die gesamte Tabelle ab, um ein VST zu füllen. Im unteren Bereich, ändere ich ja dann den SQL Code und frage nur nach dem Feld Ereignis. Vieleicht kann man ja anhand des Code´s was erkenne.

Delphi-Quellcode:
if ServiceGetStatus('', 'FirebirdGuardianDefaultInstance') = 4 then
  begin
  QryMB256PLUS.SQL.Clear;
  QryMB256PLUS.SQL.Text := 'Select * From MB256PLUS';
  if not QryMB256PLUS.Active then begin
    iError := 0;
    Repeat
      Try
        QryMB256PLUS.Open;
      Except
        on e : Exception Do begin
          sMessage := e.Message;
          Inc(iError);
          Application.ProcessMessages;
          Sleep(1000);
        end;
      end;
    until QryMB256PLUS.Active or (iError > 5); // <- bitte ausprobieren, ob 5 reicht oder eventuell höher sein muss.
    if iError > 5 then begin
      ShowMessage('Die Datenbank konnte mit ' + IntToStr(iError) + ' Versuchen nicht geöffnet werden.'
      + #13 + 'Die letzte Fehlermeldung lautete: ' + sMessage);
      Application.Terminate; // <- oder sonstige Fehlerbehandlung.
    end;
  end;
    VST.BeginUpdate;
    VST.Clear;
    QryMB256PLUS.Last;
    PBFortschritt.Max := QryMB256PLUS.RecordCount;

    for IAnzahl := 0 to 4000 do
      begin
        QryMB256PLUS.Prior;
      end;

    while not QryMB256PLUS.EOF do
      begin
        Daten := TOMB256PLUS.Create;
          with Daten do
            begin
              Daten.ID := QryMB256PLUS.FieldByName('ID').AsInteger;
              Daten.LfdNr := QryMB256PLUS.FieldByName('LfdNr').AsInteger;
              Daten.Datum := QryMB256PLUS.FieldByName('Datum').AsString;
              Daten.Uhrzeit := QryMB256PLUS.FieldByName('Uhrzeit').AsString;
              Daten.Ereignis := QryMB256PLUS.FieldByName('Ereignis').AsString;
              Daten.Teilnehmer := QryMB256PLUS.FieldByName('Teilnehmer').AsString;
              Daten.Bereich := QryMB256PLUS.FieldByName('Bereich').AsString;
            end;
          VST.AddChild(nil,Daten);

          if PBFortschritt.Visible = False then
          PBFortschritt.Visible := true;
          PBFortschritt.Position := QryMB256PLUS.RecNo;

          QryMB256PLUS.Next;
        end;
      VST.EndUpdate;
      VST.ScrollIntoView(VST.GetLast, true);

      with QryMB256PLUS do begin
      QryMB256PLUS.SQL.Clear;

      QryMB256PLUS.SQL.Text := 'SELECT FIRST 5 * FROM MB256PLUS WHERE EREIGNIS = :Ereignis';
      QryMB256PLUS.ParamByName('Ereignis').asString:= 'Einbruch';


      QRYMB256PLUS.Open;
      while Not eof do
      begin
        CBAlarme.Items.Add(FieldByName('Ereignis').AsString);
        QryMB256PLUS.Next;
      end;
      QryMB256PLUS.Active := false;
      QryMB256PLUS.Close;
      end;
      CBAlarme.ItemIndex := 1;
      PBFortschritt.Visible := false;
      MMStatus.Text := 'Datenbank geladen';
      MMStatus.Color := clLime;
      QryMB256PLUS.Close;
  end;
end;
Gruß Jens
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#28

Re: Datenbankeinträge in ComboBoxen zur Anzeige bringen.

  Alt 31. Mär 2009, 22:06
So, ich habe jetzt mal in bißchen mit IBExpert getestet, und kann da in meiner Tabelle alle Filter sauber setzten. Dann habe ich aus IBExpert die Where Bedinung kopiert und in Delphi eingefügt. Jetzt auch mein kompilieren Fehlerfrei und die SQL Abfrage wird durchgeführt.

Leider ohne Ergebnismenge. Hier mal der aktuelle Code...
Delphi-Quellcode:
      with QryMB256PLUS do begin
      QryMB256PLUS.SQL.Clear;

      QryMB256PLUS.SQL.Text := 'SELECT FIRST 5 * FROM MB256PLUS WHERE ("Ereignis") STARTING WITH :Ereignis';
      QryMB256PLUS.ParamByName('Ereignis').asString:= 'Sabotage';
      while Not eof do
      begin
        CBAlarme.Items.Add(FieldByName('Ereignis').AsString);
        QryMB256PLUS.Next;
      end;
      QryMB256PLUS.Active := false;
      QryMB256PLUS.Close;
      end;
Gruß Jens
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#29

Re: Datenbankeinträge in ComboBoxen zur Anzeige bringen.

  Alt 31. Mär 2009, 23:34
Wann öffnest du denn die Datenmenge?

Delphi-Quellcode:
  QryMB256PLUS.SQL.Text :=
    'SELECT FIRST 5 *'#13 +
    'FROM MB256PLUS'#13 +
    'WHERE ereignis STARTING WITH :Ereignis';

  QryMB256PLUS.ParamByName('Ereignis').asString:= 'Sabotage';
  QryMB256PLUS.Open;
  while not QryMB256PLUS.Eof do
  begin
    CBAlarme.Items.Append(QryMB256PLUS.FieldByName('Ereignis').AsString);
    QryMB256PLUS.Next;
  end;
  QryMB256PLUS.Close;
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#30

Re: Datenbankeinträge in ComboBoxen zur Anzeige bringen.

  Alt 1. Apr 2009, 05:28
Nur beim starten des Programm´s, die Aktuallisierung der Infoboxen, mache ich im laufe des Programm´s dann über den direkten Datenausausch. Dieser wird aber erst gestartet, wenn ich eine Verbindung zu der entsprechenden Hardware herstelle.
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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:21 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