Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Bereich eines Tabellenfeldes (https://www.delphipraxis.net/88801-bereich-eines-tabellenfeldes.html)

Starworld1000 21. Mär 2007 11:07

Datenbank: Access • Version: 2000 • Zugriff über: ADO Connection (ODBC)

Bereich eines Tabellenfeldes
 
Hallo alle zusammen

Ich habe eine Datebank mit etwa 10 Millionen Datensätzen, für die ich eine Auswertung Basteln soll. Jetzt würde ich gerne einen Bereich festlegen mit einer Editbox, wo der Benutzer einen Startwert ('01.01.2006') eingibt und einen Endwert ('01.06.2006').

Das Bereich Zwischendrin soll, bsw. in einem DbGrid, und danach in einem Diagramm erscheinen

Nun mein Problem. Ich hab absolut keine Ahnung wie ich diesen Bereich realisieren kann ? :oops:

Naja wie man wohl merkt bin ich noch Anfänger :roll: Aber Ich würde mich freuen über einen Tip von euch



Grüße Starworld

Moony 21. Mär 2007 11:30

Re: Bereich eines Tabellenfeldes
 
Also,
du kannst über einen Datetimepicker den Benutzer das Start- & Enddatum setzen lassen. Anschließend kannst du über das ADODataset und einen SQL-Befehl die Datenmenge aus deiner Datenbank rausfiltern und in einem DBGrid anzeigen lassen. Danach kannst du dann mit einem Chart deine Daten graphisch auswerten.

Starworld1000 21. Mär 2007 14:08

Re: Bereich eines Tabellenfeldes
 
Danke für die schnelle Antwort

Okay der erste Teil scheint ganz einfach zu sein, nur weis ich noch nicht Richtig wie und wo ich das mit dem SQL Befehl mache ?
Kannst du mir da weiterhelfen ? :stupid:

LG Starworld

DGL-luke 21. Mär 2007 14:17

Re: Bereich eines Tabellenfeldes
 
Ich hoffe mal, in der Tabelle gibts ein Feld, in dem das Datum drinsteht?!

dann musst du das eingegebene Datum in das Format, in dem es in der Tabelle steht, umrechnen und einen entsprechenden Vergleich ausführen, z.B. so

SQL-Code:
SELECT * FROM data WHERE date > :date1 AND date < :date2
date1 und date2 solltest du dann in deiner zugriffskomponente definieren können, wenn ich das richtig in Erinnerung habe, ich arbeite meistens mit direkten SQL-Queries unter PHP.

Starworld1000 21. Mär 2007 15:11

Re: Bereich eines Tabellenfeldes
 
Ja der SQL Befehl war schon klar :cyclops:

Ich weis nur nicht wie ich den in DELPHI einbringe und wo und mit welchen Mitteln :oops:

Bin ja noch ein Anfänger in Sachen Delphi, und VBA kann DELPHI nicht es Wasser reichen :lol:

mkinzler 21. Mär 2007 15:22

Re: Bereich eines Tabellenfeldes
 
ADOQuery, ADODataSet, ...
http://www.dsdt.info/tutorials/?cat=6

Starworld1000 21. Mär 2007 16:31

Re: Bereich eines Tabellenfeldes
 
So ich hab es mal nach vielem Probieren hinbekommen

SELECT Zeit FROM Tabelle WHERE Zeit > #01-01-2006# AND Zeit < #02-01-2006#

Nur wie sag ich jetzt dem Teil, das die Werte in den 2 DateTimePicker stehen ? :mrgreen:

mkinzler 21. Mär 2007 17:31

Re: Bereich eines Tabellenfeldes
 
Verwende Parameter.

Starworld1000 21. Mär 2007 19:26

Re: Bereich eines Tabellenfeldes
 
Also jetzt steh ich wieder aufm Schlauch

Ich hab alles hinbekommen, nur weis ich jetzt nicht genau, wie ich mit dem DateTimePicker oder ner Pubs einfachen Edit Box einen Wert in die SQL Abfrage bekomme :gruebel:

Mit Parametern schön und gut aber wie ?


Ich bin zu Doof dafür, oder einfach nur Urlaubsreif :freak:

mkinzler 21. Mär 2007 19:33

Re: Bereich eines Tabellenfeldes
 
SQL-Code:
SELECT Zeit FROM Tabelle WHERE Zeit between :zeit1 and :zeit2;
Delphi-Quellcode:
AdoQuery.Parameter.ParamByName('zei1').Value := Trunc(Picker1.Date);
AdoQuery.Parameter.ParamByName('zei2').Value := Trunc(Picker2.Date);
AdoQuery.Open;

Starworld1000 21. Mär 2007 19:52

Re: Bereich eines Tabellenfeldes
 
Lol :P

Naja jetzt bekomm ich nur noch die Meldung >> Optionales Feature wurde nicht Implementiert <<
Hää ?

Aber ich Danke dir 1000x für deine Bemühungen MKINZLER :zwinker:

mkinzler 21. Mär 2007 19:57

Re: Bereich eines Tabellenfeldes
 
Zeig mal deinen Code.

Starworld1000 21. Mär 2007 20:01

Re: Bereich eines Tabellenfeldes
 
Auf die Datenbank greife ich über eine System DSN zu. Die Datenbank baut auf Access 2003 auf

Hab deinen Code sogut wie übernommen, damit ich mal Überhaupt verstehe was da vor sich geht :lol:

AdoQuery1.Parameters.ParamByName('zeit1').Value := Trunc(Start.Date);
AdoQuery1.Parameters.ParamByName('zeit2').Value := Trunc(Ende.Date);
adoquery1.Open;



Im SQL Befel steht folgendes:

SELECT Protokoll_Zeit, Behälternummer FROM Behälterinfo_B06_NL WHERE Protokoll_Zeit > :zeit1 AND Protokoll_Zeit < :zeit2

mkinzler 21. Mär 2007 20:31

Re: Bereich eines Tabellenfeldes
 
Versuch mal
Delphi-Quellcode:
AdoQuery1.Parameters.ParamByName('zeit1').asDate := Trunc(Start.Date);

Starworld1000 21. Mär 2007 20:51

Re: Bereich eines Tabellenfeldes
 
Nö leider nicht
Bringt mir nun Undeclared Identifier 'DATE' :wall:

Starworld1000 21. Mär 2007 22:35

Re: Bereich eines Tabellenfeldes
 
Jippy Problem gelöst

Es lag an den Berechtigungen
Dein erster Quellcode ging erst als ich zuhause den Compiler benutzt habe.
Wahrscheinlich ging es in der Firma nicht, da ich selbst keine Adminrechte über den Rechner und BS besitze und daher
einige Registry Einträge von Delphi gefehlt haben :angel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:51 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