6 messages in org.openoffice.fr.prog[prog] requietes SQL et operations su...
FromSent OnAttachments
Snopie Snopie1Aug 29, 2005 10:31 am 
Bernard MarcellyAug 30, 2005 3:17 am 
Snopie Snopie1Aug 30, 2005 8:25 am 
Bernard MarcellyAug 31, 2005 12:46 am 
Snopie Snopie1Aug 31, 2005 5:09 am 
Bernard MarcellyAug 31, 2005 8:12 am 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:[prog] requietes SQL et operations sur Currency Actions...
From:Snopie Snopie1 (snop@yahoo.fr)
Date:Aug 29, 2005 10:31:29 am
List:org.openoffice.fr.prog

bonjour liste, j'ai qlqs problemes avec la recuperation des resultats de requetes SQL ainsi qu'avec les nombres et les conversions string->currency.

je fais un acces odbc->mysql avec un select qui me renvoie une somme. lorsque je l'execute en ligne de commande mysql, ca marche, mais lors d'un acces a partir d'OOo, j'ai mon nombre qui est tronque de sa partie decimale: ============= 'la source est correctement connecte

res=req.executeQuery("select nom,sum(credit) from clients group by idclients") Do while res.next nom =res.Columns(0).String str_solde=res.Columns(1).String 'type String... msgbox("str_solde=" & str_solde) 'renvoie la sommme tronquee! ' traiter nom, str_solde Loop ==============

si je fais res.Columns(1).Short, la troncature est aussi effectuee. .Double n'est pas acceptable car les calculs doivent etre exacts (cf. plus loin).

puis il y a ce code: =============== Sub Main Dim s As String Dim c As Currency, d As Currency, g As Currency Dim e As Integer

s="zero" c=100/8/2 'voici d'un coup le resultat qu'on veut

GoSub dump s="un" c=100 d=100/8 '=12.5 ok

GoSub dump s="deux" c=d d=c/2 '=0 ko!

GoSub dump s="trois" e=2 d=c/e '=0 ko!

GoSub dump s="quatre" g=2 d=c/g '=0 ko!

GoSub dump

Exit Sub dump: msgbox "s=" & s & chr(13) & "c=" & c & chr(13) & "d=" & d & chr(13) & "e=" & e & chr(13) & "g=" & g Return

End Sub ===============

mais si on remplace dans les rvalues des affectations, les variables par leur val() (ie. d=val(c)/val(g)), ca marche.

en lisant "Programmation OOo" d'eyrolles, je vois que val() renvoie un flottant, or je veux un calcul _exact_ a 4 decimales.

tjs dans le meme livre p58: les currency ne supportent que + et - pour la version 1.1.

ma question est: comment fait-on pour convertir sans perte d'information (en deca de 4 decimales, et sans la troncature des flottants) ainsi que pour effectuer des operations de division et multiplication sur les currency?

M. Marcelly devrait mettre en gras le passage p58 pour la prochaine edition. ;)

merci beaucoup, snopie