Bonjour,
Ma question est partagée entre VBnet et Databases ( MSSQL, MYSQL, ORACLE, DB2 ).
J'ai créé dans les quatre SGDB une table COMPDBA avec les mêmes caractéristiques.
Notamment une colonne MONTANT définie come DECIMAL(18,2)
Dans mon programme VBNET ( Studio 2017 ) j'accède la table par une commande
DBSQLA = "SELECT REFER,NOM,MATRI,MONTANT,FLAGN,FLAGA,USERID FROM COMPDBA;"
Plus précisément avec ce code ( suivant le SGDB)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| If OAlphaT = "MSSQL" Then
DBConnectionStringSQLA = "Data Source=" & Trim(OAlphaS) & ";Database=" & OAlphaB & ";Trusted_Connection=True;"
DBConnSQLA = New SqlClient.SqlConnection(DBConnectionStringSQLA)
DBConnSQLA.Open()
DBCommandSQLA = New SqlCommand(DBSQLA, DBConnSQLA)
DBDataReaderSQLA = DBCommandSQLA.ExecuteReader()
Else
If OAlphaT = "MYSQL" Then
Dim DBConnMySQLA = New MySqlConnection("server=" & Trim(OAlphaS) & ";uid=" & Trim(AuthUserA) & ";pwd=" & Trim(AuthPwdA) & ";database=" & OAlphaB & ";")
DBConnMySQLA.Open()
DBCommandMySQLA = New MySqlCommand(DBMySQLA, DBConnMySQLA)
DBDataReaderMySQLA = DBCommandMySQLA.ExecuteReader()
Else
DBConnA = New Odbc.OdbcConnection(DBConnectionStringA)
DBConnA.Open()
DBCommandA.CommandTimeout = 3600
DBCommandA = New OdbcCommand(DBSQLA, DBConnA)
DBDataReaderA = DBCommandA.ExecuteReader()
End If
End If |
Connections spécialisées pour MSSQL et MYSQL, commandes ODBC pour DB2 et ORACLE.
Pour MSSQL et MYSQL, le retour de la commande me donne bien les décimales pour le champ MONTANT
Par exemple : pour MSSQL : 000000000015874.00 et pour MYSQL : 15874,00 ( je sais gérer les zéros non significatifs avant la virgule )
Mais pour DB2 et ORACLE, je reçois
pour DB2 : 1587400 et pour ORACLE : 15874 ( même pas 1587400 !!! )
Tout cela est à la fois disparate, mais également inexact.
Quelqu'un a une idée pour écrire un SELECT qui convienne et me renvoie bien les décimales séparées du montant avec un point ou une virgule?
Merci
Pierre
Note : quand je passe la commande SELECT dans l'éditeur studio des SGDB je reçois toujours bien les montants marqués avec les décimales.
Partager