Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

VB et procédure stockée (sql 2000)

7 réponses
Avatar
dini6031
Bonsoir,

help please...comment résoudre cette énigme ?

procédure stockée : create procedure test
as
declare @flag integer
update ... (c'est une requête
update)
set @flag=1
select @flag
go

cette procédure fonctionne parfaitement en l'appelant depuis php ou avec le
query analyser (comprendre la requête est exécutée et la valeur "1" est
retournée)...

mais en VB, casse-tête... impossible de récupérer la valeur --> message
d'erreur : impossible d'exécuter bla bla quand le recordset est fermé...

et mon code VB est :

set rset = cn.execute "test"
msgbox rset.fields(0).value

--> ça bloque sur cette dernière ligne...

C'est pour mon mémoire, je bloque depuis 4 jours et j'en ai MARRRRRRRE !

Please help

Denis

7 réponses

Avatar
Zoury
Salut!

regarde ce lien :
http://groups.google.com/groups?selm=uVvyKfXGDHA.2964%40tk2msftngp13.phx.gbl


--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic Classique
Le français se refait une beauté, parlons en :
http://www.orthographe-recommandee.info/
"dini6031" a écrit dans le message de
news:
Bonsoir,

help please...comment résoudre cette énigme ?

procédure stockée : create procedure test
as
declare @flag integer
update ... (c'est une requête
update)
set @flag=1
select @flag
go

cette procédure fonctionne parfaitement en l'appelant depuis php ou avec


le
query analyser (comprendre la requête est exécutée et la valeur "1" est
retournée)...

mais en VB, casse-tête... impossible de récupérer la valeur --> message
d'erreur : impossible d'exécuter bla bla quand le recordset est fermé...

et mon code VB est :

set rset = cn.execute "test"
msgbox rset.fields(0).value

--> ça bloque sur cette dernière ligne...

C'est pour mon mémoire, je bloque depuis 4 jours et j'en ai MARRRRRRRE !

Please help

Denis






Avatar
dini6031
Merci...
Le code que tu montres ressemble à celui que j'ai vu sur la doc de VB
hier... même résultat... j'ai essayé avec un paramètre de type returnvalue
et un output... il n'en veut pas dès lors que j'utilise une "update
query"...
Et encore 1x, no prob pour site web (appel via php)...

Si tu as encore 1 proposition...?

Ce n'est qd même pas possible que cela soit pas possible... ?

Denis

"Zoury" a écrit dans le message de
news:
Salut!

regarde ce lien :



http://groups.google.com/groups?selm=uVvyKfXGDHA.2964%40tk2msftngp13.phx.gbl


--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic Classique
Le français se refait une beauté, parlons en :
http://www.orthographe-recommandee.info/
"dini6031" a écrit dans le message de
news:
> Bonsoir,
>
> help please...comment résoudre cette énigme ?
>
> procédure stockée : create procedure test
> as
> declare @flag integer
> update ... (c'est une requête
> update)
> set @flag=1
> select @flag
> go
>
> cette procédure fonctionne parfaitement en l'appelant depuis php ou avec
le
> query analyser (comprendre la requête est exécutée et la valeur "1" est
> retournée)...
>
> mais en VB, casse-tête... impossible de récupérer la valeur --> message
> d'erreur : impossible d'exécuter bla bla quand le recordset est fermé...
>
> et mon code VB est :
>
> set rset = cn.execute "test"
> msgbox rset.fields(0).value
>
> --> ça bloque sur cette dernière ligne...
>
> C'est pour mon mémoire, je bloque depuis 4 jours et j'en ai MARRRRRRRE !
>
> Please help
>
> Denis
>
>
>
>




Avatar
Zoury
tu peux me montrer ce que tu as essayé ?


Le code que tu montres ressemble à celui que j'ai vu sur la doc de VB
hier... même résultat...



tu veux dire que tu obtiens l'erreur sur le recordset fermé ?

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
Le français se refait une beauté, parlons en :
http://www.orthographe-recommandee.info/
Avatar
dini6031
Hello,

Je t'ai envoyé mon code (et un petit message) à ton adresse hotmail...
L'as-tu reçu ?

Denis

"Zoury" a écrit dans le message de
news:
tu peux me montrer ce que tu as essayé ?


> Le code que tu montres ressemble à celui que j'ai vu sur la doc de VB
> hier... même résultat...

tu veux dire que tu obtiens l'erreur sur le recordset fermé ?

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
Le français se refait une beauté, parlons en :
http://www.orthographe-recommandee.info/




Avatar
Zoury
Avatar
jeanphicrosoft
Le Mon, 09 Aug 2004 22:34:27 +0200, dini6031 a écrit :

Bonsoir,

help please...comment résoudre cette énigme ?

procédure stockée : create procedure test
as
declare @flag integer
update ... (c'est une requête
update)
set @flag=1
select @flag
go

cette procédure fonctionne parfaitement en l'appelant depuis php ou avec le
query analyser (comprendre la requête est exécutée et la valeur "1" est
retournée)...

mais en VB, casse-tête... impossible de récupérer la valeur --> message
d'erreur : impossible d'exécuter bla bla quand le recordset est fermé...

et mon code VB est :

set rset = cn.execute "test"
msgbox rset.fields(0).value

--> ça bloque sur cette dernière ligne...

C'est pour mon mémoire, je bloque depuis 4 jours et j'en ai MARRRRRRRE !

Please help

Denis




Salut

tu ne préciees pas l'état de ta connexion au moment de remplir ton
recordset (enfin .... d'executer ta commande comme a priori tu es sous
VB6); si le recordset est fermé c'est que la connexion est fermée.
Préfères le tout ligne de code que l'utilisation éventuelle des data
environnement et autres fadaises qui en général mettaient bien la m....
dans VB6 :o))

'pour rafraichir l'état de la connexion
if connex.windowsstate=1 then connex.close
connex.open
-- et traitement du recordset
temporisation
exploitationd des données --messagebox.show( ......


JP
Avatar
dini6031
Merci msieur JP...
voici le code "complet" et un mot d'explication...

j'ai abandonné l'idée du data environment... fonctionnait bien MAIS... si tu
arrêtes le service SQL server, tu as un message popup (provient du driver
oledb) et tu ne peux pas gérer cette "erreur" (plus de connexion) toi
même... ce popup apparaît AVANT la gestion par "on error"... !

SI TU AS 1 IDEE... ?
pour l'instant, j'ai "chipoté" : je lance mon traitement (sans update
query), je récupère la valeur de retour dans le rset, et je lance une
nouvelle procédure en donnant ce paramètre... mais c'est con... je vais
devoir changer toutes mes procédures...


Voici mon code à tout hasard... (c'est pour mon mémoire, et j'ai perdu 3
jours à trouver l'origine du problème, plus 2 jours pour tenter de le
contourner)

1) vérifier l'existence du user (quand il se connecte) --> si n'existe
pas, @flag=0
2) vérifier que le password est correct --> @flag=1
3) vérifier que le user est "activé" (champ de type booléen) --> si pas
activé @flag=2

4) si le password est mauvais, un champ (nombre d'essais) est incrémenté
de 1 (requête "update")
5) si le user et password sont bons et que le user est activé, champ
"nbre d'essais" est mis à 0


merci de m'avoir lu.

@bientôt j'espère
Denis


create procedure CheckUserValid @Usr varchar(10), @Pwd varchar(10)
as

declare @flag tinyint
select @flag=count(*) from sql.usrs where [user_id] like @Usr
if (@flag!=0)
begin
set @flag=0
select @flag=count(*) from sql.v_usrs where [user_id] like @Usr and
[Password] like @Pwd
if(@flag=0)
update sql.usrs set try=try+1 where [user_id] like @Usr
else
begin
set @flag=0
select @flag=count(*) from sql.usrs_web where [user_id] like @Usr
and [Password] like @Pwd and Active=1
if (@flag=0)
set @flag=2
else
update sql.usrs set try=0 from sql.usrs where [user_id] like
@Usr
end
end
select @flag
GO

et voici pour le code VB...

Private Sub Command1_Click()
Dim rst As New ADODB.Recordset
Dim strConnect As String
Dim strSQL As String

strConnect = "Provider=MSDataShape;Data Provider=SQLOLEDB;User
ID=sql;Password=sql;Data SourceÜa2; Initial Catalog=mgmt"
strSQL = "checkuservalid_web denis,denis"
rst.Open Source:=strSQL, ActiveConnection:=strConnect,
LockType:­LockOptimistic

msgbox rset.fields(0).value




"jeanphicrosoft" a écrit dans le message de
news:
Le Mon, 09 Aug 2004 22:34:27 +0200, dini6031 a écrit :

> Bonsoir,
>
> help please...comment résoudre cette énigme ?
>
> procédure stockée : create procedure test
> as
> declare @flag integer
> update ... (c'est une requête
> update)
> set @flag=1
> select @flag
> go
>
> cette procédure fonctionne parfaitement en l'appelant depuis php ou avec


le
> query analyser (comprendre la requête est exécutée et la valeur "1" est
> retournée)...
>
> mais en VB, casse-tête... impossible de récupérer la valeur --> message
> d'erreur : impossible d'exécuter bla bla quand le recordset est fermé...
>
> et mon code VB est :
>
> set rset = cn.execute "test"
> msgbox rset.fields(0).value
>
> --> ça bloque sur cette dernière ligne...
>
> C'est pour mon mémoire, je bloque depuis 4 jours et j'en ai MARRRRRRRE !
>
> Please help
>
> Denis


Salut

tu ne préciees pas l'état de ta connexion au moment de remplir ton
recordset (enfin .... d'executer ta commande comme a priori tu es sous
VB6); si le recordset est fermé c'est que la connexion est fermée.
Préfères le tout ligne de code que l'utilisation éventuelle des data
environnement et autres fadaises qui en général mettaient bien la m....
dans VB6 :o))

'pour rafraichir l'état de la connexion
if connex.windowsstate=1 then connex.close
connex.open
-- et traitement du recordset
temporisation
exploitationd des données --messagebox.show( ......


JP