![]() |
Datenbank: ADO • Zugriff über: ADOConnection
ADO bestimmte Felder auslesen
Hallo,
ich benötige Hilfe bei einem Datenbankproblem. In einer (nicht von mir angelegten) Datenbank wird in eine Spalte das Datum, und dahinter mit einem Leerzeichen getrennt die Uhrzeit, abgespeichert. Beispiel: 17.02.2007 13:13:23 In der Spalte gibt es ca. 1200 Datensätze und alle sind unterschiedlich (dank der Zeit). Ich benötige jedoch nur das Datum, leider hilft dort die SQL-Abfrage DISTINCT nicht weiter (oder gibt es einen Zusatz, nur die ersten 10 Zeichen zu vergleichen?). Die 1200 Datensätze teilen zu 1/6 jeweils das gleiche Datum, im Endeffekt sind es also nur 6 verschiedene Daten. Ich hatte mich bereits damit abgefunden mit den kompletten Datensätzen in Delphi selber zu arbeiten, also nachträglich herauszufiltern. Dazu habe ich alles soriteren lassen und wollte dann mit einer simplen if-Abfrage: if Feld[i] <> Feld[i+1] then Speicher:=Feld[i]; Nun habe ich mit der ADOQuery und der DataSource herumexperimentiert. Ich habe immernoch nicht die richtige Formatierung für Einzelfeldabfragen gefunden. Was muss ich nehmen DataSource oder Query? FieldByName, Fields.Fields[i], usw. ich habe alles ausprobiert, entweder erhalte ich ListenMaxima Errors oder Zugriffsverletzungen :( Ich bin dankbar für jede Hilfe, es wäre wünschenswert, gleich durch einen SQL-Befehl den Datensatz auf die 6 Daten zu reduzieren! MfG -remit- |
Re: ADO bestimmte Felder auslesen
Wer Zeitangaben als String speichert, gehört IMHO standrechtlich geteert und gefedert. Aber schau doch einmal, ob das DBMS SUBSTRING oder SUBSTR unterstützt, damit könntest Du die ersten Zeichen auswerten.
|
Re: ADO bestimmte Felder auslesen
Hallo,
da sollte sowas wie
SQL-Code:
funktionieren. Manche Datenbanken mögen es auch als
select distinct(SubStr(Datumsspalte,1,10)) from tabelle
SQL-Code:
oder per Standard
select distinct(SubString(Datumsspalte,1,10)) from tabelle
SQL-Code:
Prinzipiell sollte Dein Problem aber mit SQL zu lösen sein.
select distinct(SubString(Datumsspalte from 1 for 10)) from tabelle
edit: Schreibfehler korrigiert |
Re: ADO bestimmte Felder auslesen
Hallo,
es wäre ja scön zu wissen: 1. Welche Datenbank 2. Welchen Typ hat das Feld ? Wirklich String ? (Auch Firebird zeigt beim Typ TimeStamp das Datum so an). Heiko |
Re: ADO bestimmte Felder auslesen
Danke nahpets ;-) Gut, dass es auch mit SQL funktioniert. Ich werde es morgen auf der Arbeit testen!
@DaddyH ich habe leider keine Ahnung ob es ein String ist oder ein TimeStamp, das werde ich morgen nachschauen! @hoika zu 1. Ich muss zugeben, meien Angabe oben ist ungenau, es handelt sich um eine Access-Datenbank (*.mdb). zu 2. Ich weiß nicht ob es String oder TimeStamp ist, würde die Distinct-Variante von nahmpets auch mit TimeStamps funktionieren? Ebenfalls mit SubSting oder dann SubTimeStamp? Vielen Dank an euch drei! Gruß Max |
Re: ADO bestimmte Felder auslesen
Hallo,
Zitat:
|
Re: ADO bestimmte Felder auslesen
Hallo,
es handelt sich nicht um einen String :( Es folgt immer ein "Unbekannter Fehler" habe alle Formatierungen durchprobiert. So weit ich mich jetzt informiert habe kann beim Anlegen doch auch festgelegt werden, in welchem Umfang die Daten in die Datenbank geschrieben werden. Ob man TT.MM.JJJJ oder MM.TT.JJ usw. haben möchte, kann es nicht auch so möglich sein, die Daten wieder auszulesen? Gruß Max |
Re: ADO bestimmte Felder auslesen
Hallo,
Substring scheint's bei Access nicht zu geben. Schau mal bitte bei Google nach: ![]() Mid, Left, Right könnten da helfen, ob die mit Timestamp zurechtkommen weiß ich nicht. Hilft Dir derda ![]() |
Re: ADO bestimmte Felder auslesen
Ich habe noch ein wenig gegoogelt und herausgefunden dass man die einzelnen Daten herausfiltern kann mit
SQL-Code:
jetzt bekomme ich bereits alle verschiedene Monate heraus, das ist wunderbar, wie lautet der Befehl für das komplette Datum?
SELECT DISTINCT MONTH([datum]) FROM rechnungen
Ich habe mir den Link angeschaut, dort wird das TimeStamp-Format jedoch in einen String umgewandelt, ich glaube (oder besser hoffe^^) jedoch, dass es auch ohne Umwandlung funktioniert ;-) Gruß Max |
Re: ADO bestimmte Felder auslesen
Hallo,
wenn's Month gibt, gibt es bestimmt auch ein Day und Year und ein Date für alles zusammen. Das Access-SQL scheint sich ein bisserl an Basic anzulehnen, eventuell einfach mal die Basicfunktionen für Datum und Konvertierung benutzen. Mit ein bisserl Glück klappt das ja. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:07 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