![]() |
Re: Datenbankeinträge in ComboBoxen zur Anzeige bringen.
Es gibt kein Last, aber First mit umgekehrter Sortierung
SQL-Code:
SELECT FIRST 5 * FROM MB256PLUS WHERE EREIGNIS = Einbruch order by id desc;
Zitat:
|
Re: Datenbankeinträge in ComboBoxen zur Anzeige bringen.
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 |
Re: Datenbankeinträge in ComboBoxen zur Anzeige bringen.
Liste der Anhänge anzeigen (Anzahl: 1)
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; |
Re: Datenbankeinträge in ComboBoxen zur Anzeige bringen.
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:
:hi:
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; |
Re: Datenbankeinträge in ComboBoxen zur Anzeige bringen.
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. |
Re: Datenbankeinträge in ComboBoxen zur Anzeige bringen.
Zitat:
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 ? :gruebel: |
Re: Datenbankeinträge in ComboBoxen zur Anzeige bringen.
Zitat:
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:
Gruß Jens
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; |
Re: Datenbankeinträge in ComboBoxen zur Anzeige bringen.
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:
Gruß Jens
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; |
Re: Datenbankeinträge in ComboBoxen zur Anzeige bringen.
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; |
Re: Datenbankeinträge in ComboBoxen zur Anzeige bringen.
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.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:19 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