[Delphi 7] DBE floating point error

Pagina: 1
Acties:

  • FendtVario
  • Registratie: Januari 2002
  • Laatst online: 12-05-2025

FendtVario

The leader drives Vario!

Topicstarter
Deze fout is echt heel wazig. Wanneer ik een query probeer te openen in Delphi krijg ik een "Invalid floating point operation". Ik heb gezocht naar een oplossing maar alles wat ik vind gaat terug naar Delphi 2. Ondertussen heb ik ook al van alles geprobeert en wordt het nu toch wel een beetje zat.

Het meest gekke is dat het alleen gebeurt als ik het programma in de IDE met debugger draai. Heb alle debugger opties al aan en uit gehad en niets helpt, nieuwe unit gemaakt maar dit mag ook niet baten. De code ziet er zo uit:

Delphi:
1
2
3
4
5
6
7
8
9
try
  Query1.SQL.Clear;
  Query1.SQL.Text = 'select * from breed where bvdate in ' +
    '(select max(date) from breed)'
  Query1.Open
except
  on E: Exception do
    showmessage(e.message);
end;


Het gaat fout op het moment dat de query wordt geopend. Iemand ideeën, ik ben nu wel een beetje ;( |:(

[ Voor 3% gewijzigd door FendtVario op 08-05-2003 11:05 . Reden: dubbelle quotes ipv enkele in de code ]

www.fendt.com | Nikon D7100 | PS5


  • whoami
  • Registratie: December 2000
  • Laatst online: 10:17
Welke database gebruik je?
Eigenlijk kan je beter de BDE niet meer gebruiken, aangezien die toch al een tijdje niet meer ondersteund wordt dacht ik. Kijk eens naar dbExpress enzo, dat is de technologie die Borland nu aanbied om databases ala Sql Server en Oracle te benaderen.
(Misschien ligt het dus wel aan het feit dat je de BDE gebruikt. Ik heb onlangs ook nog problemen tegengekomen door gebruik te maken van die BDE; drivers enzo die niet meer aagepast zijn, etc....)

https://fgheysels.github.io/


  • FendtVario
  • Registratie: Januari 2002
  • Laatst online: 12-05-2025

FendtVario

The leader drives Vario!

Topicstarter
Ik gebruik Paradox. Op het moment kan ik geen andere database gebruiken omdat de database waarop dit programma gebasseerd is al een paar jaar bestaat. Mijn programma wordt hierop een toevoeging dus switchen gaat niet meer. Overschakelen naar dbExpress is er dus ook niet bij.

Voor de komende programma's moeten we daar wel rekening mee gaan houden ja, voorals nog schiet dit niet echt op.

www.fendt.com | Nikon D7100 | PS5


  • killermar
  • Registratie: Augustus 2002
  • Laatst online: 12-07 08:05
Is Paradox via ODBC geen optie?
Anyway blijft het natuurlijk raar. Kan je de tabel structuur ff posten? En heb je componenten aan die Query1 hangen (dbedits etc)?

  • whoami
  • Registratie: December 2000
  • Laatst online: 10:17
Het zal te maken hebben met die max(datum). Een datetime veld wordt als een float voorgesteld.

https://fgheysels.github.io/


  • FendtVario
  • Registratie: Januari 2002
  • Laatst online: 12-05-2025

FendtVario

The leader drives Vario!

Topicstarter
Nee, paradox via ODBC kan nu niet omdat er al een DBE alias is en het oude programma werkt met deze alias en niet met ODBC.

Dat van die datum zou goed kunnen ja, het gekke alleen is dat een soortgelijke query op een andere tabel in het programma wel werkt. Dat is wel iets waarmee ik hoop ik iets kan, ga even op onderzoek uit.

www.fendt.com | Nikon D7100 | PS5


  • FendtVario
  • Registratie: Januari 2002
  • Laatst online: 12-05-2025

FendtVario

The leader drives Vario!

Topicstarter
Ik heb nu een query waarin twee parameters staan. Als ik deze niet invul (standaardwaarde = 0) wordt de query wel uitgevoerd. Ik was al blij dat het hele zaakje weer werkte blijkt dat de regel waar de parameter gezet wordt was voorzien van commentaartekens |:(

De parameters zijn integers in de tabel. De query ziet er zo uit:
SQL:
1
2
3
4
5
6
select *
from breed
where id = :anyid
and bvdate in (select max(bvdate)
                        from breed
                        where id = :anyid)


Met ParamByName('anyid').AsInteger vul ik de parameter in. Uitvoeren met Params[i] maakt niet uit.

www.fendt.com | Nikon D7100 | PS5


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Je kan niet 2 parameters hebben op een verschillende plaats met dezelfde naam.

We adore chaos because we like to restore order - M.C. Escher


  • FendtVario
  • Registratie: Januari 2002
  • Laatst online: 12-05-2025

FendtVario

The leader drives Vario!

Topicstarter
Dat gaat anders al jaren goed. Maar om de wet van Murphy te voorkomen toch maar even geprobeerd, werkt ook niet. Wat wel vreemd is dat he uitvoeren van de queries afzonderlijk wel goed gaat. Dus alleen de query met select max(bvdate) etc doet het wel, alleen in dit subselect schijnt het niet te kunnen. In de SQL explorer werkt het vervolgens weer wel.

Dan maar met twee queries al wordt ik daar helemaal niet vrolijk van omdat deze query minimaal al 50x wordt uitgevoerd.

www.fendt.com | Nikon D7100 | PS5


  • FendtVario
  • Registratie: Januari 2002
  • Laatst online: 12-05-2025

FendtVario

The leader drives Vario!

Topicstarter
whoami schreef op 08 mei 2003 @ 12:57:
Het zal te maken hebben met die max(datum). Een datetime veld wordt als een float voorgesteld.
Het is inderdaad de datum die voor alle elende zorgt. na de query gesplitst te hebben werkt het wel maar gaat lezen van het veld niet.

www.fendt.com | Nikon D7100 | PS5

Pagina: 1