AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi ADO bestimmte Felder auslesen
Thema durchsuchen
Ansicht
Themen-Optionen

ADO bestimmte Felder auslesen

Ein Thema von -remit- · begonnen am 9. Sep 2009 · letzter Beitrag vom 10. Sep 2009
Antwort Antwort
Seite 1 von 2  1 2      
-remit-

Registriert seit: 11. Jan 2008
20 Beiträge
 
Delphi 2005 Personal
 
#1

ADO bestimmte Felder auslesen

  Alt 9. Sep 2009, 15:45
Datenbank: ADO • Zugriff über: ADOConnection
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-
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: ADO bestimmte Felder auslesen

  Alt 9. Sep 2009, 15:50
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.
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
nahpets
(Gast)

n/a Beiträge
 
#3

Re: ADO bestimmte Felder auslesen

  Alt 9. Sep 2009, 16:14
Hallo,

da sollte sowas wieselect distinct(SubStr(Datumsspalte,1,10)) from tabelle funktionieren. Manche Datenbanken mögen es auch als select distinct(SubString(Datumsspalte,1,10)) from tabelle oder per Standardselect distinct(SubString(Datumsspalte from 1 for 10)) from tabelle Prinzipiell sollte Dein Problem aber mit SQL zu lösen sein.

edit: Schreibfehler korrigiert
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: ADO bestimmte Felder auslesen

  Alt 9. Sep 2009, 17:05
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
Heiko
  Mit Zitat antworten Zitat
-remit-

Registriert seit: 11. Jan 2008
20 Beiträge
 
Delphi 2005 Personal
 
#5

Re: ADO bestimmte Felder auslesen

  Alt 9. Sep 2009, 18:03
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
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#6

Re: ADO bestimmte Felder auslesen

  Alt 10. Sep 2009, 10:03
Hallo,
Zitat von -remit-:
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
zu 2.: Nein, würde so nicht funktionieren, da müsstest Du (wahrscheinlich) den Timestamp erst in einen String verwandeln und darauf ein SubString und darauf dann Distinct. Wie sich Access in dem Umfeld verhält, weiß ich nicht.
  Mit Zitat antworten Zitat
-remit-

Registriert seit: 11. Jan 2008
20 Beiträge
 
Delphi 2005 Personal
 
#7

Re: ADO bestimmte Felder auslesen

  Alt 10. Sep 2009, 10:11
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
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#8

Re: ADO bestimmte Felder auslesen

  Alt 10. Sep 2009, 10:23
Hallo,

Substring scheint's bei Access nicht zu geben.
Schau mal bitte bei Google nach: access substring sql.
Mid, Left, Right könnten da helfen, ob die mit Timestamp zurechtkommen weiß ich nicht.

Hilft Dir derda http://entwickler-forum.de/archive/i...p/t-52453.html eventuell weiter?
  Mit Zitat antworten Zitat
-remit-

Registriert seit: 11. Jan 2008
20 Beiträge
 
Delphi 2005 Personal
 
#9

Re: ADO bestimmte Felder auslesen

  Alt 10. Sep 2009, 10:31
Ich habe noch ein wenig gegoogelt und herausgefunden dass man die einzelnen Daten herausfiltern kann mit

SELECT DISTINCT MONTH([datum]) FROM rechnungen jetzt bekomme ich bereits alle verschiedene Monate heraus, das ist wunderbar, wie lautet der Befehl für das komplette Datum?

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
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#10

Re: ADO bestimmte Felder auslesen

  Alt 10. Sep 2009, 10:43
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.
  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 03:32 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