AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL Abfrage auf Access .mdb
Thema durchsuchen
Ansicht
Themen-Optionen

SQL Abfrage auf Access .mdb

Ein Thema von alphaflight83 · begonnen am 6. Aug 2008 · letzter Beitrag vom 6. Aug 2008
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von alphaflight83
alphaflight83

Registriert seit: 5. Jun 2008
Ort: Würzburg
148 Beiträge
 
Delphi 12 Athens
 
#1

SQL Abfrage auf Access .mdb

  Alt 6. Aug 2008, 10:47
Datenbank: Access MDB • Zugriff über: ADO
Tag DP-Gemeinde,
bin jetzt schon ne weile im Forum angemeldet,
und konnte auch schon einige Lösungen hier finden.
Jetzt komme ich hier auch mal zu einem Eigenen Beitrag.

Folgendes Problem steht bei mir an:
Mein Programm soll mehrere Clients permanent überwachen,
nun soll bei Programmstart eine lokale Access Liste angelegt werden,
die aus Informationen der Clients besteht, welche am Server angemeldet sind.
Aus dieser Liste wiederum sollen nun die IDs aller Clients die abgefragt werden sollen,
in Delphi in ein dyn Feld geschrieben werden.
Hierzu wiederum wird am Server eine Flag gesetzt, die in der Access Tabelle das Feld Status auf 'Y' setzt
(Etwas ungünstig, da String obwohl Bool gereicht hätte, geht aber Server seitig nun nicht mehr anders)

Langer Rede kurzer Sinn:
Momentan rufe ich einfach alle IDs der in der Liste eingetragenen Clients ab, ohne auf den Status zu achten.
Delphi-Quellcode:
 DataModule.ADOTableClients.Active := True;
 NumberOfClients := DataModule.ADOTableClients.RecordCount;
 SetLength(Client_ID_Array, NumberOfClients);

 for i := 0 to (NumberOfClients - 1) do
   begin
   Client_ID_Array[i]:= DataModule.ADOTableClients.FieldByName ('ID').AsInteger;
   DataModule.ADOTableClients.Next;
 end;
Das funktioniert auch wunderbar, nur werden später eben auch die Geräte gepollt die gar nicht benötigt werden.
Um das zu ändern nehme ich statt der Table eine Query:
Delphi-Quellcode:
with DataModule.ADOQueryClients do
  begin
    Close;
    SQL.Text := 'SELECT ID FROM Clients WHERE Status LIKE :Status ';
    Parameters.ParamByName('Status').Value:='Y';
    Open;
    NumberOfClients := RowsAffected;
  end;
Kompiliert auch, tut aber nichts, sprich NumberOfClients ist immer 0.
Da ich die Delphi Geschichte jetzt erst seit knapp 2 Monaten mache und die Zeit mit Datenbanken
in Delphi noch erheblich kürzer ist, kanns natürlich sein, dass das nur Blödsinn und der Fehler recht simpel ist.
Ich find ihn aber leider nicht
Dann muss natürlich auch noch die for Schleife für die Query angepasst werden, wobei ich hier momentan auch noch etwas auf dem Schlauch stehe.

Wäre schön wenn mir hier jemand bei diesem Problem helfen könnte.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: SQL Abfrage auf Access .mdb

  Alt 6. Aug 2008, 10:51
Warum like? Dann brauchst du auch den Joker
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von alphaflight83
alphaflight83

Registriert seit: 5. Jun 2008
Ort: Würzburg
148 Beiträge
 
Delphi 12 Athens
 
#3

Re: SQL Abfrage auf Access .mdb

  Alt 6. Aug 2008, 10:55
Auch ein = ändert nichts am Ergebnis, oder hab ich dich falsch verstanden?
Edit: Nur zum Verständnis: Wenn mein Wert genau Y ist, dann sollte doch auch ein LIKE ohne Joker funktionieren, oder?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#4

Re: SQL Abfrage auf Access .mdb

  Alt 6. Aug 2008, 10:57
Irre ich mich, oder gibt RowsAffected die Anzahl der durch ein Statement geänderten Datensätze zurück?

[edit] Achja, Willkommen in der DP [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von alphaflight83
alphaflight83

Registriert seit: 5. Jun 2008
Ort: Würzburg
148 Beiträge
 
Delphi 12 Athens
 
#5

Re: SQL Abfrage auf Access .mdb

  Alt 6. Aug 2008, 10:59
Zitat:
Die Eigenschaft RowsAffected gibt an, auf wie viele Datensätze bei der letzten Ausführung einer Abfrage zugegriffen wurde.
Edit: ups, man sollte auch weiterlesen
Zitat:
RowsAffected ist 0, wenn keine Datensätze aktualisiert oder gelöscht wurden
Edit2: Aber auch RecordCount gibt kein Ergebnis zurück.

@DeddyH: Danke, fühl mich schon recht wohl
  Mit Zitat antworten Zitat
Benutzerbild von Codewalker
Codewalker

Registriert seit: 18. Nov 2005
Ort: Ratingen
945 Beiträge
 
Delphi XE2 Professional
 
#6

Re: SQL Abfrage auf Access .mdb

  Alt 6. Aug 2008, 11:15
Wenn es dir nur um die Anzahl geht, dann schreib doch ein "Select count(........)"-SQL. Dann sparst du dir das ermitteln über Delphi und Recordcount & co.
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von alphaflight83
alphaflight83

Registriert seit: 5. Jun 2008
Ort: Würzburg
148 Beiträge
 
Delphi 12 Athens
 
#7

Re: SQL Abfrage auf Access .mdb

  Alt 6. Aug 2008, 11:17
Ich möchte ja dann auch die IDs der ermittelten Datensätze haben, damit ich später nur diese Clients pollen kann.
Die Anzahl stellt dabei nur die Längenangabe für das dynamische Array und den Zähler der for-Schleife dar.
Die SQL Anweisung funktioniert eben im Delphi Kontext irgendwie nicht.
Im SQL Editor gibt er mir brav die gewünschten Datensätze zurück.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#8

Re: SQL Abfrage auf Access .mdb

  Alt 6. Aug 2008, 11:22
Geh doch mal mit Last auf den letzten Datensatz, bevor Du den RecordCount abfragst. Ich meine mal gelesen zu haben, dass das helfen soll.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von alphaflight83
alphaflight83

Registriert seit: 5. Jun 2008
Ort: Würzburg
148 Beiträge
 
Delphi 12 Athens
 
#9

Re: SQL Abfrage auf Access .mdb

  Alt 6. Aug 2008, 11:25
... auch nicht.
Hab auch mal versucht den Parameter wegzulassen:
SQL.Text := 'SELECT TT_ID FROM Machines WHERE Status = ''Y'' '; Aber das hatte auch nicht den gewünschten Effekt.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#10

Re: SQL Abfrage auf Access .mdb

  Alt 6. Aug 2008, 11:30
Und Du bist ganz sicher, dass Du die richtige Datasource zugewiesen hast bzw. die Abfrage auch tatsächlich ausgeführt wird? Mal einen Breakpoint gesetzt? Ist sicherlich nur ein kleiner dummer Fehler, aber so etwas sucht man meist ewig.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 20:29 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