Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1694 connectés 

  FORUM HardWare.fr
  Programmation

  [VB6] Pb de type

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VB6] Pb de type

n°35246
tom64
Posté le 29-05-2001 à 15:05:41  profilanswer
 

Voilà, je me suis fait une procédure dans un module dont l'en tête est la suivante :
Public Sub Récupérer(EnregCode As Recordset)
 
en gros, elle affecte à des variables les valer d'une table
 
    ' on récupère les valeurs contenues dans la table Revue de Contrat
    Code_rev = EnregCode("Code_rev" )
    Date_rev = EnregCode("date" )
    Reference_piece = EnregCode("ref_piece" )
.................
 
end sub
 
dans mon prog, g mis pour l'appeler :
 
Récupérer (EnregCode), sachant ke EnregCode est un recordset.
 
Lors de l'exécution, il me met comme erreur : typer incompatible
 
COMMENT CE FAIS-CE?? COMMENT ARRANGER çA??

mood
Publicité
Posté le 29-05-2001 à 15:05:41  profilanswer
 

n°35277
tom64
Posté le 29-05-2001 à 16:10:42  profilanswer
 

Personne n'a une chtite idée?? :??:  :??:  :??:  
 
Je suis sûr k'en plus c tt con :hap:  :hap:  
 
Merciiiiiii

n°35284
trictrac
Posté le 29-05-2001 à 16:38:35  profilanswer
 

tu as l'erreur a quel nivo??

n°35290
tom64
Posté le 29-05-2001 à 16:54:33  profilanswer
 

kand j'exécute mon programme, il s'arrête à cette ligne:
Récupérer (EnregCode)
 
et me met comme erreur typer incompatible

n°35297
Lord II
PIB2000
Posté le 29-05-2001 à 17:08:30  profilanswer
 

Question idiote, est il possible de passer un objet de type recordset ( c'est tout de meme un objet assez complexe) ???


---------------
La bave du crapaud n'empèche pas la caravane de passer .
n°35299
tom64
Posté le 29-05-2001 à 17:12:35  profilanswer
 

oui on peut le faire car j'utilise une fonction filtre de ce type :
 
Public Function Filtre(EnregTempo As Recordset, Element As String, CodeSaisi As String) As Recordset
 
    ' Définit un filtre pour l'objet Recordset indiqué,
    ' puis ouvre un nouvel objet Recordset.
    EnregTempo.Filter = Element & " = '" & CodeSaisi & "'"
    Set Filtre = EnregTempo.OpenRecordset
 
End Function
 
puis je l'appelle sous mon prog de cette façon :  
 
Set EnregCode = Filtre(Base_Code.Recordset, "Code_rev", Code)        
 
 
en fait, en mettant tt le code de ma procédure dans mon prog, ça marche nikel!!
l'inconvénient c ke j'aurai besoin plusieurs fois de cette procédure et vu ke le code est assez long, je préférerai avoir une unike procédure et non plusieurs fois le même bloc de code

n°35303
thegti
La constipation se soigne ...
Posté le 29-05-2001 à 17:15:33  profilanswer
 

Oui c'est possible je l'ai dejà vu
Par contre, il faut bien déclarer ta procédure et ne pas laisser EnregCode en type Variant

n°35307
tom64
Posté le 29-05-2001 à 17:21:18  profilanswer
 

ben mon EnregCode est k'en type Recorset

n°35451
tom64
Posté le 30-05-2001 à 09:15:59  profilanswer
 

Bonjourrrrrrrrr
 
ben euh la nuit n'a pas porté conseil, g tjrs pas la réponse !!
 :cry:  :cry:  :cry:  :cry:  :cry:  :cry:  :cry:  
 
Mais today, je c ke je v l'avoir  :jap:  :jap:

n°35479
tom64
Posté le 30-05-2001 à 10:18:27  profilanswer
 

:pt1cable:  :pt1cable:  :pt1cable:  
put1 je galère grave!!! g essayé plein de truc mais ça marche poooooooooo
 :cry:  :cry:  :cry:  :cry:  :sweat:  :sweat:

mood
Publicité
Posté le 30-05-2001 à 10:18:27  profilanswer
 

n°35522
tom64
Posté le 30-05-2001 à 11:08:32  profilanswer
 

ahhhhhhh   je suis sûr ke c tt con
put1 je pète les plombs pour un truc tt con!!
 :pt1cable:  :pt1cable:  :pt1cable:  
 :crazy:  :crazy:  :crazy:  :crazy:  
help!!!!!!!

n°35529
Carbon_14
Posté le 30-05-2001 à 11:13:59  profilanswer
 

Normalement, les structures devraient passer sous forme de pointeur lors de l'appel donc on peut "tout" passer en argument (si on met ByVal, c'est la valeur qui passe).
 
Dans Public Function Filtre(EnregTempo As Recordset, Element As String, CodeSaisi As String) As Recordset, le retour de la fonction est un Recordset mamembre .OpenRecordset de la structure Recordset
 
    ' Définit un filtre pour l'objet Recordset indiqué,
    ' puis ouvre un nouvel objet Recordset.
    EnregTempo.Filter = Element & " = '" & CodeSaisi & "'"
    Set Filtre = EnregTempo.OpenRecordset
 
End Function

n°35532
Carbon_14
Posté le 30-05-2001 à 11:21:49  profilanswer
 

Pb clavier..
 
Normalement, les structures devraient passer sous forme de pointeur lors de l'appel donc on peut "tout" passer en argument (si on met ByVal, c'est la valeur qui passe).
 
Dans Public Function Filtre(EnregTempo As Recordset, ..., ...) As Recordset, le retour de la fonction est un Recordset. Set Filtre = correspond à EnregTempo.OpenRecordset de la structure Recordset.
 
C'est une structure imbriquée ?
 
Faut peut-être faire Set Filtre = EnregTempo; (si c'est un Recordset, et qu'un membre de la structure l'est aussi : pb).
 
Les instructions
Code_rev = EnregCode("Code_rev" )  
Date_rev = EnregCode("date" )
signifient que EnregCode est une fonction, pas un type de variable .... (à moins que cela soit autorisé de "mélanger les types" ).

n°35534
tom64
Posté le 30-05-2001 à 11:28:38  profilanswer
 

Le ByVal n'a pas marché hier.
 
euh en fait le EnregCode("code_rev" ) est la même chose ke EnregCode.field="Code_rev"
 
Mais le pb, c ke g une proc"dure dans un module ki a pour en tête:
Public Sub Récupérer(EnregCode As Recordset)  
 
lors de l'appel dans mon prog, je fais :  Récupérer(MonEnregCode)
sachant ke plus haut g défini MonEregCode as Recordset.
 
Mais euh en fait, j'utilise ma fonction Filtre, donc serait il possible ke celle-ci change le type de MonEnregCode et ainsi kd j'appelle le procédure Récupérer, je ne passerai plus un type Recordset mais otre chose :??:  :??:

n°35551
HelloWorld
Salut tout le monde!
Posté le 30-05-2001 à 12:08:14  profilanswer
 

y'a un truc qui me chifone :
"lors de l'appel dans mon prog, je fais :  Récupérer(MonEnregCode)"
 
VB a de droles de syntaxe lors de l'appel de fonctions :
 
Récupérer MonEnregCode 'OK
Call Récupérer(MonEnregCode) 'OK
Récupérer (MonEnregCode) 'WARNING
 
on remarque l'espace entre le nom de la fonction et les parenthèse
si tu faits ca, VB empeche toute modification du contenu des parenthèses !!! :lol:
donc soit tu rajoutes un call (moi je te le conseille, on pige bien que c'est un appel de fonction) soit tu vires ces parentheses mais n'utilise pas cette syntaxe de merde qui provoque souvent des erreurs ;)


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°35553
HelloWorld
Salut tout le monde!
Posté le 30-05-2001 à 12:09:46  profilanswer
 

:D"tu faits":D
vous aurez corrigé : tu fé !! ;)


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°35558
tom64
Posté le 30-05-2001 à 12:21:55  profilanswer
 

put1 kd je disai ke c'était un truc tt con!!
 :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  :pt1cable:  
 
Merci ça marche nikel!! :hap:  :hap:  :hap:  
 
PS: VIVE MICROSOFT :gun:

n°35640
pampi
Posté le 30-05-2001 à 15:08:06  profilanswer
 

lol
 
ahahah
 
lol
 
ahahah
 
je suis plié de rire !!!!
 
HeloWorld une fois de plus tu sauve tom ahahahahahahah
 
 
Tom arrete avec les smileys on dirait un gosse de 10 ans qui voit un forum avec smileys pour le première fois !

n°35658
_GrEgY_
Posté le 30-05-2001 à 15:54:56  profilanswer
 

qd tu ecrit:
Récupérer (MonEnregCode)  c'est une synthaxe spéciale pour quand il y a une valeur retournée...
 
l'exemple le plus concret c'est MsgBox
on écrit:
Msgbox "Coucou",vbok
Mais
If MsgBox("Oui ou non",vbyesno)= vbyes then
 
c'est vrai que VB fait tres fort au niveau de la synthaxe des appels de fcts...

n°35687
HelloWorld
Salut tout le monde!
Posté le 30-05-2001 à 16:26:43  profilanswer
 

"qd tu ecrit:  
Récupérer (MonEnregCode)  c'est une synthaxe spéciale pour quand il y a une valeur retournée...  
 
l'exemple le plus concret c'est MsgBox  
on écrit:  
Msgbox "Coucou",vbok  
Mais  
If MsgBox("Oui ou non",vbyesno)= vbyes then "
 
je suis pas trop sur de ca ...
si tu fais :
MsgBox ("Oui ou non",vbyesno)
If MsgBox("Oui ou non",vbyesno) then ...
je suis pas sur qu'il l'interprete de la meme facon :
deja il rajoute un espace entre le MsgBox et la parenthese dans le premier cas
mais surtout le premier cas ne passe pas (erreur lors compile)
le seul cas ou ca marche c'est qd y'a 1 seul parametre :
MsgBox ("Oui ou non" )
donc quand tu faits
If MsgBox("Oui ou non",vbyesno) then ...
il l'interprete bien de la meme maniere que le call
la difference (je l'avais lu dans l'aide je crois) c'est que le Call provoque la perte de la valeur de retour ...
Tout ca pour dire que si MsgBox modifiait un des parametres (le premier par exemple), pour
MsgBox ("Oui ou non" ) ca marcherait pas (j'ai deja eu des erreurs lors de l'execution "type de param incorrect" je crois parseke j'avais oublié le call)
mais If MsgBox("Oui ou non" ) then ... marcherait ...
on m'a dit sur ce forum que cette syntaxe biscornue était acceptée afin de protéger le parametre ... mais elle est vraiment etrange (1 seul param ?) et piege facilement (BASIC ... pour les Beginers ??? avec des piege comme ca ?)


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°35888
Carbon_14
Posté le 31-05-2001 à 09:41:41  profilanswer
 

Comme dit HelloWorld, si le Basic autorise des écarts permettant des pièges, c'est dommage. MsgBox est fonction, et aussi subroutine (selon qu'avec ou sans parenthèses)..
 
Je trouve, pour la lisibilité (et comprendre quand on n'a pas les spécif (suis resté à VB3)) que si  
EnregCode("code_rev" ) est la même chose ke EnregCode.field="Code_rev"
 
il vaudrait mieux écrire EnregCode.field="Code_rev" qui est plus "long" à taper mais plus lisible. Il me semble qu'en VB3, on peut aussi écrire Bouton = "blabla", car c'est le champ .text qui est pris par défaut. Illisible...
 
J'ai déja transcrit un programme (à moi) VB3 en BC3 (16 bits) et le copier/coller du source évite des refontes, c'est "presque" direct (surtout quand c'est du code pas lié aux interfaces, boutons, etc !!).

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [VB6] Pb de type

 

Sujets relatifs
[VB6] Comment faire appel à un champ d'une table[VB6] Comment lire les données dans une listbox ?
[VB6] appeler une fonction faites depuis Access97[ASP][SQL] type de champ dans une requete
[VB6] DataGridProblème de Variables sous VB6
[VB6] Forcer la sortie d'une procédure[VB6] rafraichir une fenetre iexplore a partir de visual basic !!!
VBScript VB6 FileSystemObject[VB6] Attaque d'office 2000 (notemment Access 2000) depuis VB
Plus de sujets relatifs à : [VB6] Pb de type


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR