AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Phänomenale Fehlermeldung unter Vista...zum Rätseln
Thema durchsuchen
Ansicht
Themen-Optionen

Phänomenale Fehlermeldung unter Vista...zum Rätseln

Ein Thema von haentschman · begonnen am 26. Feb 2009 · letzter Beitrag vom 14. Mär 2009
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.292 Beiträge
 
Delphi 12 Athens
 
#1

Phänomenale Fehlermeldung unter Vista...zum Rätseln

  Alt 26. Feb 2009, 18:50
Hallo an alle...

vieleicht hat ja jemand eine logische Erklärung

Delphi-Quellcode:
try
  ZQueryStatistikKunde:= TZQuery.Create(self);
  ZQueryStatistikKunde.Connection:= DMDB.ZConnection1;
  try
    for M1 = 1 to 12
      begin
        Tage:= MonthDays[IsLeapYear(Jahr), M1];
        ZQueryStatistikKunde.SQL.Text:= 'select count(ID) from BEHANDLUNG where DATUM between :Datum1 and :Datum2 and KUNDENNUMMER = :Kunde';
        ZQueryStatistikKunde.ParamByName('Datum1').AsDate:= StrToDate('01.' + IntToStr(M1) +'.' + IntToStr(Jahr));
        ZQueryStatistikKunde.ParamByName('Datum2').AsDate:= StrToDate(IntToStr(Tage) + '.' + IntToStr(M1) +'.' + IntToStr(Jahr));
        ZQueryStatistikKunde.ParamByName('Kunde').AsString:= ZQueryKundenDetail.FieldValues['KUNDENNUMMER'];
        // immer String 'abcdf' als TestKundennummer
        ZQueryStatistikKunde.Open; // Fehler beim Durchlauf #2
        SeriesPat.Add(ZQueryStatistikKunde.FieldValues['COUNT'],IntToStr(M1),clRed);
      end;
  except
    FehlerCode:= 'E255';
    Fehlerstatus:= False;
    Fehlertext:= 'Statistik einlesen fehlgeschlagen. ';
    raise;
  end;
  BitBtn4.SetFocus;
finally
  ZQueryStatistikKunde.Free;
end;
Beschreibung:
- das ganze liest monatlich die Anzahl an Behandlungen
- jeder Monat wird dem Chart hinzugefügt
- unter XP läuft das durch
- unter Vista (compiliert unter Vista als auch die funktionierende exe aus der XP Compilierung) erzeugen folgenden Fehler:

SQL Error: conversion Error from String "abcdef", Overflow during Data Type Conversion

- der Fehler tritt beim 2. Open der Query auf

Werte zum Zeitpunkt des Fehlers:
Parameter Date1: 01.02.2009
Parameter Date2: 28.02.2009
Parameter Kunde: 'abcdef'
M1: 2

PS: der Januar und ab März laufen durch...warum mag Vista den Februar nicht

viel Spaß beim Rätseln
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Phänomenale Fehlermeldung unter Vista...zum Rätseln

  Alt 26. Feb 2009, 19:00
Was für ein typ hat der Parameter Kunde?
Funktioniert ZQueryStatistikKunde.ParamByName('Kunde').AsString := ZQueryKundenDetail.FieldByName('KUNDENNUMMER').asString; ?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Phänomenale Fehlermeldung unter Vista...zum Rätseln

  Alt 26. Feb 2009, 19:01
Ich würde an Deiner Stelle die StrToDate-Aufrufe durch DateUtils-Funktionen ersetzen oder zumindest EncodeDate verwenden.
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
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.292 Beiträge
 
Delphi 12 Athens
 
#4

Re: Phänomenale Fehlermeldung unter Vista...zum Rätseln

  Alt 26. Feb 2009, 19:15
Danke für die schnelle Reaktion.
Zitat:
Was für ein typ hat der Parameter Kunde?
- es bleibt gleich ob ich den String aus dem Datenfeld hole oder direkt einen String als Parameter übergebe.
Die Fehlermeldung hat mit der Ursache nichtszu tun...denke ich, da alle Monate im Prinzip mit dem gleichen Quelltext durchlaufen nur der Februar löst diese Meldung aus. Die Parameter sind korrekt (siehe oben)
Zitat:
Ich würde an Deiner Stelle die StrToDate-Aufrufe durch DateUtils-Funktionen ersetzen oder zumindest EncodeDate verwenden.
...Hast Recht, komme aber erst in der übernächsten Version dazu (FeinTuning)

PS: ich hatte auch probiert in jedem Schleifendurchlauf das Query Objekt zu erzeugen und freizugeben. Ergebnis das gleiche.

  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Phänomenale Fehlermeldung unter Vista...zum Rätseln

  Alt 27. Feb 2009, 07:34
Nicht jeder Februar hat 29 Tage.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.007 Beiträge
 
Delphi 12 Athens
 
#6

Re: Phänomenale Fehlermeldung unter Vista...zum Rätseln

  Alt 27. Feb 2009, 07:42
Keine Ahnung, ob es damit zusammenhängt, aber wäre es nicht geschickt, die Query nach jedem Schleifendurchlauf wieder zu schließen?
Uwe Raabe
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#7

Re: Phänomenale Fehlermeldung unter Vista...zum Rätseln

  Alt 27. Feb 2009, 09:17
Hallo,

als erstes mal Try&Error machen, mit festen Werten:
Delphi-Quellcode:
ZQueryStatistikKunde.SQL.Text := 'select count(ID) from BEHANDLUNG where DATUM between ''01.02.2009'' and ''28.02.2009'' and KUNDENNUMMER = :Kunde';
ZQueryStatistikKunde.ParamByName('Kunde').AsString := 'abcdef';
ZQueryStatistikKunde.Open;
SeriesPat.Add(ZQueryStatistikKunde.FieldValues['COUNT'],IntToStr(2),clRed);
ZQueryStatistikKunde.Close;
funktioniert? Wenn ja dann:
Delphi-Quellcode:
ZQueryStatistikKunde.SQL.Text := 'select count(ID) from BEHANDLUNG where DATUM between :Datum1 and :Datum2 and KUNDENNUMMER = :Kunde';
ZQueryStatistikKunde.ParamByName('Datum1').AsString := '01.02.2009';
ZQueryStatistikKunde.ParamByName('Datum2').AsString := '28.02.2009';
ZQueryStatistikKunde.ParamByName('Kunde').AsString := 'abcdef';
ZQueryStatistikKunde.Open;
SeriesPat.Add(ZQueryStatistikKunde.FieldValues['COUNT'],IntToStr(2),clRed);
ZQueryStatistikKunde.Close;
funktioniert? Wenn ja dann:
Delphi-Quellcode:
Tage := MonthDays[IsLeapYear(Jahr), 2];
ZQueryStatistikKunde.SQL.Text := 'select count(ID) from BEHANDLUNG where DATUM between :Datum1 and :Datum2 and KUNDENNUMMER = :Kunde';
ZQueryStatistikKunde.ParamByName('Datum1').AsDate := StrToDate('01.' + IntToStr(2) + '.' + IntToStr(2009));
ZQueryStatistikKunde.ParamByName('Datum2').AsDate := StrToDate(IntToStr(28) + '.' + IntToStr(2) + '.' + IntToStr(2009));
ZQueryStatistikKunde.ParamByName('Kunde').AsString := ZQueryKundenDetail.FieldValues['KUNDENNUMMER'];
ZQueryStatistikKunde.Open;
SeriesPat.Add(ZQueryStatistikKunde.FieldValues['COUNT'],IntToStr(2),clRed);
ZQueryStatistikKunde.Close;
funktioniert? Wenn ja dann:
Delphi-Quellcode:
M1 := 2;
Tage := MonthDays[IsLeapYear(Jahr), M1];
ZQueryStatistikKunde.SQL.Text := 'select count(ID) from BEHANDLUNG where DATUM between :Datum1 and :Datum2 and KUNDENNUMMER = :Kunde';
ZQueryStatistikKunde.ParamByName('Datum1').AsDate := StrToDate('01.' + IntToStr(M1) + '.' + IntToStr(2009));
ZQueryStatistikKunde.ParamByName('Datum2').AsDate := StrToDate(IntToStr(Tage) + '.' + IntToStr(M1) + '.' + IntToStr(2009));
ZQueryStatistikKunde.ParamByName('Kunde').AsString := ZQueryKundenDetail.FieldValues['KUNDENNUMMER'];
ZQueryStatistikKunde.Open;
SeriesPat.Add(ZQueryStatistikKunde.FieldValues['COUNT'],IntToStr(M1),clRed);
ZQueryStatistikKunde.Close;
Wo gibt es jetzt den Fehler?
Was für 'ne Datenbank ist denn das?
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

Re: Phänomenale Fehlermeldung unter Vista...zum Rätseln

  Alt 27. Feb 2009, 11:00
versuch es mal so (unit DateUtils einbinden)
Delphi-Quellcode:
ZQueryStatistikKunde:= TZQuery.Create(self);
try
  ZQueryStatistikKunde.Connection:= DMDB.ZConnection1;
  ZQueryStatistikKunde.SQL.Text:=
    'select count(ID) from BEHANDLUNG where DATUM between :Datum1 and :Datum2 and KUNDENNUMMER = :Kunde';

  try
    for M1 := 1 to 12 do
      begin

        ZQueryStatistikKunde.ParamByName('Datum1').AsDate:=
          EncodeDate( Jahr, M1, 1 );
        ZQueryStatistikKunde.ParamByName('Datum2').AsDate:=
          IncDay( IncMonth( EncodeDate( Jahr, M1, 1 ), 1 ), -1 );
        ZQueryStatistikKunde.ParamByName('Kunde').AsString:=
          ZQueryKundenDetail.FieldValues['KUNDENNUMMER'];
        // immer String 'abcdf' als TestKundennummer

        if ZQueryStatistikKunde.Active then
          ZQueryStatistikKunde.ReQuery
        else
          ZQueryStatistikKunde.Open; // Fehler beim Durchlauf #2
        if not ZQueryStatistikKunde.Eof then
          SeriesPat.Add(ZQueryStatistikKunde.FieldValues['COUNT'],IntToStr(M1),clRed);

      end;
    ZQueryStatistikKunde.Close;
  except
    FehlerCode:= 'E255';
    Fehlerstatus:= False;
    Fehlertext:= 'Statistik einlesen fehlgeschlagen. ';
    raise;
  end;
  BitBtn4.SetFocus;
finally
  ZQueryStatistikKunde.Free;
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.292 Beiträge
 
Delphi 12 Athens
 
#9

Re: Phänomenale Fehlermeldung unter Vista...zum Rätseln

  Alt 27. Feb 2009, 11:25
Danke für Eure zahlreiche Anteilnahme 8)
Zitat:
Keine Ahnung, ob es damit zusammenhängt, aber wäre es nicht geschickt, die Query nach jedem Schleifendurchlauf wieder zu schließen?
...ich bin schon gar soweit gegangen, das QueryObjekt in jedem Schleifendurchlauf zu erzeugen und freizugeben. Das Ergebnis: Februar --> Fehler

@nahpets:
- ich habe die komplette Liste schon vorher durch, statische Werte, Namensänderungen der Objekte / Variablen ohne Besserung
- auch die Unit im Projekt verschoben, damit der Compiler das ganze anders compiliert.

@Sir Rufo:
- dazu hatte ich noch nicht die Zeit. werde es aber schnellstens testen. Bemerkung: da auch ein festes Datum keine Besserung erreicht, denke ich, daß auch das EncodeDate keine Wirkung zeigt

Zitat:
Nicht jeder Februar hat 29 Tage.
dafür ist IsLeapYear da und das Datum im Parameter ist der 28.02.2009 weil wir dieses Jahr kein Schaltjahr haben

Danke an alle...

Zitat:
Was für 'ne Datenbank ist denn das?
...upps Firebird 2.0 mit Zeos
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#10

Re: Phänomenale Fehlermeldung unter Vista...zum Rätseln

  Alt 27. Feb 2009, 11:42
Hallo,

das ist aber komisch, dann Ändere doch mal das Endedatum vom Februar auf 27.02.2009 ... bis (schlimmstenfalls) runter zum 01.02.2009. Wenn Du dann irgendwann durchkommst, suche für den Tag, mit dem Du nicht mehr durchkommst, ob irgend einer es (wie auch immer) geschafft hat, ein ungültiges Februardatum in die Datenbank zu kloppen.
Deine Fehlermeldung muss ja nicht zwingend auf eine fehlerhafte Abfrage zurückzuführen sein, sondern kann auch durch fehlerhafte Daten in der Ergebnismenge ausgelöst werden.

Habe vor Jahren mal den 31. April 4515 gesucht, die Software rauchte beim Import von Daten ab, aber nur abhängig von irgendwelchen Filtern. Durch "binäre" Suche (sprich jeweils Halbierung des zu testenden Teilbereiches der Daten) bin ich dann irgendwann auf diesen kaputten Datensatz gekommen. Da ich keinen direkten Zugriff auf die Datenbank hatte, sondern nur mit der Software darauf zugreifen konnte, war das nicht wirklich spaßig, da sie sich beim Auftreten des Fehlers so zerschossen hat, dass ohne Neuinstallation nichts zu machen war.
  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 22:55 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