AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Wiedervorlageliste

Ein Thema von LogoPie · begonnen am 15. Mär 2004 · letzter Beitrag vom 18. Mär 2004
Antwort Antwort
Seite 1 von 2  1 2      
LogoPie

Registriert seit: 7. Okt 2003
106 Beiträge
 
Delphi 5 Professional
 
#1

Wiedervorlageliste

  Alt 15. Mär 2004, 10:21
Moin zusammen

Ich möchte beim Programm start also bei Form Create eine Datenbank abfrage machen.
Vielleicht gehört dieser eintrag ja auch zu den Datenbanken.
Nun denn, ich möchte eine Tabelle nach dem heutigen Datum durchsuchen.
Wenn Datensätze gefunden werden soll ein neues Form mit eben diesen Datensatz(sätze)
angezeit werden.
Auf dem Form befindet sich ein TDBCtrlGrid in dem die Daten angezeigt werden sollen.
Ich use eine ADS Datenbank.
MfG Pierre
  Mit Zitat antworten Zitat
manuel

Registriert seit: 17. Sep 2003
Ort: MainBootRecord
72 Beiträge
 
Delphi 4 Client/Server
 
#2

Re: Wiedervorlageliste

  Alt 15. Mär 2004, 10:22
Und was genau ist die Frage

manuel
sometimes I feel diagonally parked in a parallel universe
  Mit Zitat antworten Zitat
LogoPie

Registriert seit: 7. Okt 2003
106 Beiträge
 
Delphi 5 Professional
 
#3

Re: Wiedervorlageliste

  Alt 15. Mär 2004, 10:28
Nochmal, sobald ein Datensatz(sätze) das heutige Datum besizt soll
mein Form mit der TDBCrtlGrid angezeigt werden.
Wie mache ich das?
  Mit Zitat antworten Zitat
15. Mär 2004, 10:34
Dieses Thema wurde von "sakura" von "Programmieren allgemein" nach "Datenbanken" verschoben.
Das gehört aber woanders hin
Robert_G
(Gast)

n/a Beiträge
 
#5

Re: Wiedervorlageliste

  Alt 15. Mär 2004, 10:43
Der Code müsste mit einer ADOQuery laufen. Wieviel sich da bei beim ADS-Zeugs ändert weiß ich nicht.
Delphi-Quellcode:
With Query Do
Begin
  SQL.Text :=
    'SELECT Count(*)' + #10 +
    'FROM X' + #10 +
    'WHERE Y = :i_DtNow';
  // Parse Statement um Variablen zu erkennen
  Prepared := True;
  // Parameterzuweisung
  With Parameters Do
    ParamByName('i_DtNow').DataType := ftDate;
    ParamByName('i_DtNow').Value := now();
  End;
  // Ausführen
  Open;

  If Not EOF and (Fields[0].asInteger > 0) Then
    [Mach dein Form auf];
End;
  Mit Zitat antworten Zitat
Benutzerbild von CenBells
CenBells

Registriert seit: 30. Mär 2003
Ort: Kiel urspr. Lübeck
176 Beiträge
 
Delphi 7 Professional
 
#6

Re: Wiedervorlageliste

  Alt 15. Mär 2004, 10:46
hallo,

für dein Vorhaben benötigst du nicht viel

Schreibe eine Methode, die folgendermaßen arbeitet (beachte, du benötigst ein Query)

Delphi-Quellcode:
procedure testUndAnzeige;
begin
  deinQuery.Sql.text :=
    'SELECT Count(*)'#13#10 +
    ' FROM Tabelle'#13#10 +
    ' WHERE DeineSpalte = ' + QuotedStr(DateToStr(Now));
  deinQuery.Open;
  if (deinQuery.Fields[0].AsInteger > 0) then
    zeigeFormAn;
end;
//edit: mist zu langsam

Gruß
Ken
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#7

Re: Wiedervorlageliste

  Alt 15. Mär 2004, 11:50
komplett OT, muss aber mal gesagt werden:
Wie oft soll ich denn noch predigen, dass Datumsangaben nicht in den String des Statements gebastelt werden sollten!!!
Wenn deine DB einen String nach einem anderen Format umwandelt als das lokale Windows des Client, gibt es einen Fehler oder viel schlimmer: Es könnten Tag & Monat vertauscht werden.
Mit diesen Stringbasteleien macht man auch so geniale Erfindungen wie Cursor- & Statement- Cache vollkommen witzlos, da ja jedesmal der SQL Code geändert wird und nicht nur der Wert eines Parameters.
Diese beiden Features machen aber mitunter den enormen Geschwindigskeitszuwachs bei den großen & teuren DBs aus.
Das soll nicht heißen das kleine DBs damit nicht klarkommen, auch bei denen läuft es schneller, da bei mehrmaligem Aufrufen das Parsing des Statements entfällt.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#8

Re: Wiedervorlageliste

  Alt 15. Mär 2004, 11:52
Zitat von LogoPie:
Ich möchte beim Programm start also bei Form Create eine Datenbank abfrage machen.
Vielleicht gehört dieser eintrag ja auch zu den Datenbanken.
Nun denn, ich möchte eine Tabelle nach dem heutigen Datum durchsuchen.
Durchsuchen ist die falsche Technik.
Richtig ist Filtern.

Gefiltert wird mit SQL:
SQL-Code:
SELECT * FROM Worklist
WHERE Status=0 AND WorkDate=:WorkDate
Status=0 bedeutet: die Datensätze sind noch aktiv.
(Status=1 wäre "abgeschlossen", weitere Statuswerte sind denkbar)

Zitat von LogoPie:
Wenn Datensätze gefunden werden soll ein neues Form mit eben diesen Datensatz(sätze)
angezeit werden.
Man muss nicht die Anzahl der Datensätze mit Count(*) abfragen,
sondern wir stellen die SQL-Anfrage und schauen, ob die Ergebnismenge
leer ist (.IsEmpty) oder nicht.
Delphi-Quellcode:
QryWorklist.Open;
if not QryWorklist.IsEmpty then
begin
   // zeige das Wiedervorlageformular an.
   FormWiedervorlage.ShowModal;
end;
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von CenBells
CenBells

Registriert seit: 30. Mär 2003
Ort: Kiel urspr. Lübeck
176 Beiträge
 
Delphi 7 Professional
 
#9

Re: Wiedervorlageliste

  Alt 15. Mär 2004, 11:56
Zitat von Robert_G:
komplett OT, muss aber mal gesagt werden:
Wie oft soll ich denn noch predigen, dass Datumsangaben nicht in den String des Statements gebastelt werden sollten!!!
Wenn deine DB einen String nach einem anderen Format umwandelt als das lokale Windows des Client, gibt es einen Fehler oder viel schlimmer: Es könnten Tag & Monat vertauscht werden.
Mit diesen Stringbasteleien macht man auch so geniale Erfindungen wie Cursor- & Statement- Cache vollkommen witzlos, da ja jedesmal der SQL Code geändert wird und nicht nur der Wert eines Parameters.
Diese beiden Features machen aber mitunter den enormen Geschwindigskeitszuwachs bei den großen & teuren DBs aus.
Das soll nicht heißen das kleine DBs damit nicht klarkommen, auch bei denen läuft es schneller, da bei mehrmaligem Aufrufen das Parsing des Statements entfällt.
Hallo,
Hmm, wusste ich gar nicht. Ist das echt so?
Dann muss ich ja mal rangehen und alle statements in meinem Projekt dahingehend überarbeiten.

Gruß
Ken
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#10

Re: Wiedervorlageliste

  Alt 15. Mär 2004, 11:57
@Shmia
Eine Abfrage mit Count(*) wird vom Optimizer einer vernünftigen DB anders interpretiert als eine Abfrage, die die Daten der Tabelle(-n) darstellt.
Dein Open führt immer noch die komplette Abfrage aus, auch wenn du nicht durch die Ergebnismenge läufst.
  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:16 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