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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
DBSQLA = "SELECT REFER,NOM,MATRI,MONTANT,FLAGN,FLAGA,USERID FROM  COMPDBA;"
Plus précisément avec ce code ( suivant le SGDB)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.