OVH Cloud OVH Cloud

Pb : VB6->ADO->Oracle - Champs Number to Null

8 réponses
Avatar
John O'Daly
Bonjour,

Dans un applicatif VB6 attaquant une base Oracle via ADO si
je veux appliquer une valeur Nulle (Null du VB) dans un
champ Nombre, la valeur stockee, apres l'update, est
-72099375479783400.

Code:

Rs.Open stSql, ConnectData, adOpenDynamic, adLockOptimistic
Rs.Fields("CHAMPS1").Value = Null
Rs.Update

Faut-il passer une autre valeur pour obtenir la valeur
'Null' sous Oracle ?

Salutation

8 réponses

Avatar
Jean-Marc
"John O'Daly" a écrit dans le message de
news:899301c43288$9eecda00$
Bonjour,

Dans un applicatif VB6 attaquant une base Oracle via ADO si
je veux appliquer une valeur Nulle (Null du VB) dans un
champ Nombre, la valeur stockee, apres l'update, est
-72099375479783400.

Code:

Rs.Open stSql, ConnectData, adOpenDynamic, adLockOptimistic
Rs.Fields("CHAMPS1").Value = Null
Rs.Update

Faut-il passer une autre valeur pour obtenir la valeur
'Null' sous Oracle ?




Hello,
je n'ai pas de base Oracle sous la main, mais je crois que avec la valeur =>
Nothing <= , ça marche.

[HS] Rem: En .net, il y a la classe DBNull, et on peut utiliser DBNull.value
pour faire ça;

Si ça marche, je suis intéressé par ton feedback.

Jean-Marc
Avatar
Zoury
ou si tu ne passes rien?

Rs.Open stSql, ConnectData, adOpenDynamic, adLockOptimistic
Rs.Update



--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/
Avatar
Le But est de remettre le champs a Null, donc si je ne
passe rien, je garde l'ancienne valeur!!!

-----Message d'origine-----
ou si tu ne passes rien?

Rs.Open stSql, ConnectData, adOpenDynamic, adLockOptimistic
Rs.Update



--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml -


http://www.mztools.com/


.



Avatar
Le nothing ne passe pas dans le champs d'un Rs
J'ai essaye de regarde si il n'y avait pas un truc du genre
DBNull en VB6 mais sans succes!!!

-----Message d'origine-----
"John O'Daly" a écrit dans le message de
news:899301c43288$9eecda00$
Bonjour,

Dans un applicatif VB6 attaquant une base Oracle via ADO si
je veux appliquer une valeur Nulle (Null du VB) dans un
champ Nombre, la valeur stockee, apres l'update, est
-72099375479783400.

Code:

Rs.Open stSql, ConnectData, adOpenDynamic, adLockOptimistic
Rs.Fields("CHAMPS1").Value = Null
Rs.Update

Faut-il passer une autre valeur pour obtenir la valeur
'Null' sous Oracle ?




Hello,
je n'ai pas de base Oracle sous la main, mais je crois que


avec la valeur =>
Nothing <= , ça marche.

[HS] Rem: En .net, il y a la classe DBNull, et on peut


utiliser DBNull.value
pour faire ça;

Si ça marche, je suis intéressé par ton feedback.

Jean-Marc




.



Avatar
Zoury
désolé j'ai mal lu.. je croyais que tu crééais un nouvel enregsitrement :O)

tu pourrais utiliser une requête directement :
'***
Option Explicit

Private Sub Main()

Dim cn As ADODB.Connection
Set cn = New ADODB.Connection

Call cn.Open("Provider=SQLOLEDB.1;Persist Security Infoúlse;User
ID=sa;Initial Catalog=te;Data Source=gcodev")
Call cn.Execute("Update personne set nom = NULL where idpersonne 7797")
Call cn.Close

End Sub
'***

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/
Avatar
Zoury
juste par curiosité quel provider utilises-tu?

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/
Avatar
Si j'utilise la requete directement ca marche, mais ca rame
si je veux le faire sur 40000 enregistrements... (40000
Updates!!!) avec un recordset, je peux faire un update a la
fin de mon traitement... bcp plus rapide.

-----Message d'origine-----
désolé j'ai mal lu.. je croyais que tu crééais un nouvel


enregsitrement :O)

tu pourrais utiliser une requête directement :
'***
Option Explicit

Private Sub Main()

Dim cn As ADODB.Connection
Set cn = New ADODB.Connection

Call cn.Open("Provider=SQLOLEDB.1;Persist Security


Infoúlse;User
ID=sa;Initial Catalog=te;Data Source=gcodev")
Call cn.Execute("Update personne set nom = NULL where


idpersonne =
7797")
Call cn.Close

End Sub
'***

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml -


http://www.mztools.com/


.



Avatar
Oracle ODBC driver (8.01.06.00)
Provider=MSDASQL.1;Extended
Properties="DSN=APPLI_ORACLE;UID=APPLI_USR;PWD=APPLI_PWD;DBQ=pc _oracle;DBA=W;APA=T;FEN=F;QTO=T;FRC;FDL;LOB=F;RST=F ;FRL=F;MTS=F;CSR=F;PFC;TLO=0;"


-----Message d'origine-----
juste par curiosité quel provider utilises-tu?

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml -


http://www.mztools.com/


.