![]() |
Phänomenale Fehlermeldung unter Vista...zum Rätseln
Hallo an alle... :hi:
vieleicht hat ja jemand eine logische Erklärung :P
Delphi-Quellcode:
Beschreibung:
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; - 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 :wiejetzt: - 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 :gruebel: viel Spaß beim Rätseln :-) |
Re: Phänomenale Fehlermeldung unter Vista...zum Rätseln
Was für ein typ hat der Parameter Kunde?
Funktioniert
Delphi-Quellcode:
?
ZQueryStatistikKunde.ParamByName('Kunde').AsString := ZQueryKundenDetail.FieldByName('KUNDENNUMMER').asString;
|
Re: Phänomenale Fehlermeldung unter Vista...zum Rätseln
Ich würde an Deiner Stelle die StrToDate-Aufrufe durch DateUtils-Funktionen ersetzen oder zumindest EncodeDate verwenden.
|
Re: Phänomenale Fehlermeldung unter Vista...zum Rätseln
Danke für die schnelle Reaktion. :thumb:
Zitat:
:wink: 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:
PS: ich hatte auch probiert in jedem Schleifendurchlauf das Query Objekt zu erzeugen und freizugeben. Ergebnis das gleiche. :hi: |
Re: Phänomenale Fehlermeldung unter Vista...zum Rätseln
Nicht jeder Februar hat 29 Tage.
|
Re: Phänomenale Fehlermeldung unter Vista...zum Rätseln
Keine Ahnung, ob es damit zusammenhängt, aber wäre es nicht geschickt, die Query nach jedem Schleifendurchlauf wieder zu schließen?
|
Re: Phänomenale Fehlermeldung unter Vista...zum Rätseln
Hallo,
als erstes mal Try&Error machen, mit festen Werten:
Delphi-Quellcode:
funktioniert? Wenn ja dann:
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;
Delphi-Quellcode:
funktioniert? Wenn ja dann:
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;
Delphi-Quellcode:
funktioniert? Wenn ja dann:
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;
Delphi-Quellcode:
Wo gibt es jetzt den Fehler?
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; Was für 'ne Datenbank ist denn das? |
Re: Phänomenale Fehlermeldung unter Vista...zum Rätseln
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; |
Re: Phänomenale Fehlermeldung unter Vista...zum Rätseln
Danke für Eure zahlreiche Anteilnahme 8)
Zitat:
@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:
Danke an alle... :hi: Zitat:
|
Re: Phänomenale Fehlermeldung unter Vista...zum Rätseln
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. |
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