AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Suche nach 2 Feldern in DB
Thema durchsuchen
Ansicht
Themen-Optionen

Suche nach 2 Feldern in DB

Ein Thema von Zaebos · begonnen am 5. Jun 2007 · letzter Beitrag vom 5. Jun 2007
Antwort Antwort
Seite 1 von 2  1 2      
Zaebos

Registriert seit: 5. Jun 2007
33 Beiträge
 
#1

Suche nach 2 Feldern in DB

  Alt 5. Jun 2007, 18:36
Datenbank: DBase • Zugriff über: ODBC
Hallo zusammen!!

Gerade neu und schon mit Fragen bombardieren.... SRY!.
Also, folgende Frage:

Ich habe eine dbase-DB mit einem Datumsfeld und einem Zeitfeld (Datumsfeld in Form 'dd.mm.yyyy' und Zeitfeld in Form 'hhmm').

Gibt es eine Anweisung, mit der ich innerhalb der DB nach einem Datensatz suchen kann, der:

- Vom Datum her kleiner oder gleich dem aktuellen Datum ist
UND
- die Zeit kleiner oder gleich der aktuellen Zeit ist,

wodurch mir dieser evtl. vorhandene Datensatz angezeigt wird? Falls der Datensatz nicht verfügbar sein soll (in der Zukunft liegt und keine älteren Datensätze mehr vorhanden sind) soll eine Fehlermeldung erscheinen.

Habe bereits mit Table1.Locate herumgetüftelt, erziele jedoch kein Ergebnis mit 2 Feldern, höchstens mit einem. Geht das überhaupt? Und wenn ja wäre natürlich die Frage WIE....

Ich danke euch schonmal für eure Ideen. (Muss mich entschuldingen. Bin halt nochn kleiner Anfänger).
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Suche nach 2 Feldern in DB

  Alt 5. Jun 2007, 18:37
Locate geht auch mit mehreren Feldern Oder besser per SQL
Markus Kinzler
  Mit Zitat antworten Zitat
Zaebos

Registriert seit: 5. Jun 2007
33 Beiträge
 
#3

Re: Suche nach 2 Feldern in DB

  Alt 5. Jun 2007, 18:45
ja. stimmt. war ich wohl zu schnell. NUR: Wie schaffe ich es auch wirklich nach einem Datensatz zu suchen, der nicht größer als 'now' ist bzw. größer als die aktuelle zeit und dem aktuellen Datum....???
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Suche nach 2 Feldern in DB

  Alt 5. Jun 2007, 18:46
select ... where datum between <a> and [b] and zeit between <c> and <d>;
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#5

Re: Suche nach 2 Feldern in DB

  Alt 5. Jun 2007, 19:05
Zitat von mkinzler:
select ... where datum between <a> and [b] and zeit between <c> and <d>;
Und je nach verwendeter SQL-Engine kannst du natürlich anstelle von <a> bzw [b] auch TODAY() oder bei <c> bzw <d> NOW() einsetzen. Den genauen Syntax kann man ja nachlesen. Hat den Vorteil, dass man den Datum / Zeitwert nicht innerhalb von Delphi erstellen muß.
Und zusätzlich kann SQL dann auch noch Rechnen. z.B: TODAY()-1 oder so.....

Einfach mal ein bischen nachschlagen...
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
Zaebos

Registriert seit: 5. Jun 2007
33 Beiträge
 
#6

Re: Suche nach 2 Feldern in DB

  Alt 5. Jun 2007, 20:04
Hmmm. Das wäre ja praktisch. Wie müsste denn die Formatierung von Datum und Zeit aussehen? Also ich habe Exportbedingt folgendes:

Datum:= "dd.mm.yyyy"
Zeit:= "hhmm"

Mein SQLString würde meiner Meinung nach dann etwa so aussehen???:

SELECT DATUM,ZEIT FROM DB WHERE DATUM BETWEEN "01.01.1999" AND '''+FormatDateTime('mm.dd.yyyy', now)+''AND ZEIT BETWEEN "0000" AND '''+FormatDateTime('hhmm', now)+''' Oder eher:

SELECT DATUM,ZEIT FROM DB WHERE DATUM BETWEEN "01.01.1999" AND TODAY() AND ZEIT BETWEEN "0000" AND NOW()
  Mit Zitat antworten Zitat
Zaebos

Registriert seit: 5. Jun 2007
33 Beiträge
 
#7

Re: Suche nach 2 Feldern in DB

  Alt 5. Jun 2007, 20:31
???
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#8

Re: Suche nach 2 Feldern in DB

  Alt 5. Jun 2007, 20:57
Also dazu müßtest du dann erstmal kund tun, welche Engine du benutzt. BDE, oder...?

Desweiteren ist dein zweiter String schon ganz gut. Wobei ich nicht glaube das du zwar Trennzeichen (.) beim Datum hast, aber keines bei der Zeit? Und wenn die Zeit explizit angibst, dann würde ich auch die Sekunden mit angeben ("00:00:00").
Und zusätzlich setze ich dann die Between-Clauseln einzeln noch in Klammern, was ich wohl aber nur aus gründen meiner persönlichen Übersichtlichkeit tue.

Aber den letztendlichen Syntax mußt der Anleitung deiner Engine entnehmen. Bei MDB ist das teilweise anders als bei MySQL und bei BDE (weiß ich aber jetzt aus dem Kopf nicht so genau. Ich arbeite immer nur mit MySQL).

Aber probiers doch einfach mal aus?

Vielleicht hast du ja auch eine SQL-Query-Prog, mit dem du den Syntax solange bearbeitest, bis er funktioniert? Oder du machst dir so ein Query-prog eben schnell selbst.
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
Zaebos

Registriert seit: 5. Jun 2007
33 Beiträge
 
#9

Re: Suche nach 2 Feldern in DB

  Alt 5. Jun 2007, 21:33
Jau. Läuft ^^ Vielen Dank für eure Hilfe. Echt cool so. Darauf kann ich aufbauen. Danke Danke
  Mit Zitat antworten Zitat
Zaebos

Registriert seit: 5. Jun 2007
33 Beiträge
 
#10

Re: Suche nach 2 Feldern in DB

  Alt 5. Jun 2007, 22:18
Achja. Wie kann ich denn ne Fehlermeldung ausspucken, wenn er keinen passenden Datensatz findet???
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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