Generer un identifiant vb probleme : impossible de trouver lobjet
hanamichiforce
Messages postés17Date d'inscriptionmercredi 4 janvier 2006StatutMembreDernière intervention26 janvier 2007
-
26 janv. 2006 à 10:44
hanamichiforce
Messages postés17Date d'inscriptionmercredi 4 janvier 2006StatutMembreDernière intervention26 janvier 2007
-
26 janv. 2006 à 16:45
voila je vien en dernier recours et jai besoin daide : voici ma fonction ...
Public Function get_id(marequete As String, nomchamp As String) As Integer
'mes variables
Dim recordset As New ADODB.recordset
Dim bool As Boolean
If recordset.ActiveConnection Is Nothing Then recordset.ActiveConnection = SQLSRVDATA.EASYMED.ConnectionString
If recordset.RecordCount = -1 Then
get_id = 1
Else
recordset.MoveFirst
'trouver le nom du champ
'---- le probleme est a ce niveau il ne trouve pa l'objet----
get_id = recordset!nomchamp
recordset.MoveNext
'---parourir le recordset
Do While recordset.EOF False And bool False
If get_id + 1 = recordset!nomchamp Then
get_id = recordset!nomchamp
Else
get_id = get_id + 1
bool = True
End If
recordset.MoveNext
Loop
End If
End Function
sil vous plait de laide ou une piste, merci davance
A voir également:
Generer un identifiant vb probleme : impossible de trouver lobjet
hanamichiforce
Messages postés17Date d'inscriptionmercredi 4 janvier 2006StatutMembreDernière intervention26 janvier 2007 26 janv. 2006 à 11:40
je te remercie de ton oui c bien sur recordset!nomchamp kil ne fonctionne pas..qu'il ne trouve pa d'objet..j'ai essayer ta solution ..mai c pa la bonne merci quand même..pour ton aide .
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 200628 26 janv. 2006 à 12:17
recordset!nomchamp ne peut pas être valable !!! nomchamp est une variable de type string !! Avec cette notation, tu lui demande de retroiuver dans le recordset un chmp nommé "nomchamp", pas un champ dont le nom est stocké dans la var nomchamp !!!
Pour retrouver ton champ, il faut que tu parcours la colelction Fields de ton recordset pour retrouver le bon champ ...
dim chpId as long
Dim i as long
chpId = -1
For i =0 to recordset.fields
if lcase$(recordset.fields(i).name) = lcase$(nomchamp) then
chpId = i
exit for
End if
next
if chpId = -1 then
Msgbox "Champ " & nomchamp & " inexistant dans le recordset"
exit function
endif
' Maintenant tu peux faire ta boucle avec "recordset.fields(chpId)" au lieu de "recordset!nomchamp"
Do While recordset.EOF False And bool False
If get_id + 1 = recordset.fields(chpId) Then
get_id = recordset!nomchamp
Else
get_id = get_id + 1
bool = True
End If
recordset.MoveNext
Loop
J'ai pas testé mais ca devrait être OK comme ca
CR
Vous n’avez pas trouvé la réponse que vous recherchez ?
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 200628 26 janv. 2006 à 12:19
PArdon !! Je corrige la boucle ...
Do While recordset.EOF False And bool False
If get_id + 1 = recordset.fields(chpId) Then
get_id = recordset.fields(chpId)
Else
get_id = get_id + 1
bool = True
End If
recordset.MoveNext
Loop
hanamichiforce
Messages postés17Date d'inscriptionmercredi 4 janvier 2006StatutMembreDernière intervention26 janvier 2007 26 janv. 2006 à 15:49
oui je l'ai compris ensuite, jai essayé ta solution il me parle dicompatibilité de type...du coup je tente autre chose mais g encore un souci voici mon code :
Public Function get_id(recordset, nomchamp As String) As Integer
'mes variables
Dim bool As Boolean
recordset.MoveFirst
'récupération du premier identifiant
get_id = nomchamp
get_id = get_id + 1
recordset.MoveNext
'---parourir le recordset
Do While recordset.EOF False And bool False
If get_id = nomchamp Then
get_id = nomchamp + 1
Else
get_id = get_id + 1
bool = True
End If
recordset.MoveNext
Loop
End Function
cette fois je n'ai plus de souci d'objet par contre le recordset.movenext ne fonctionne pas et je peux ne réaliser que 3 enregistrement et là je comprends pas...merci de votre aide..
bmikl59
Messages postés77Date d'inscriptionlundi 5 septembre 2005StatutMembreDernière intervention14 février 2008 26 janv. 2006 à 16:07
Excuse moi mais je comprend pas trop ce que tu fais......
deja à la place de faire :
'récupération du premier identifiant
get_id = nomchamp
get_id = get_id + 1
tu peux faire
get_id = nomchamp + 1
Ta le meme resultat.....
Bon, j'essaie de t'aider (moi pas etre Admin et moi pas etre MVP), ca serai cool que t'explique un peu ce que tu fais dans ta boucle.....avec ton if
Mais si un moment ton movenext (dans la boucle) ne marche plus, c'est ptet que la variable bool est passée à true...... dans ce cas la tu sortirai de la boucle
Enfin bon, j'dis ca comme ca........
Sinon ben bon courage (on en a besoin qd ca veut pas faire ce qu'on veut)
hanamichiforce
Messages postés17Date d'inscriptionmercredi 4 janvier 2006StatutMembreDernière intervention26 janvier 2007 26 janv. 2006 à 16:20
oui tu as raison cetait pour ma reflexion le get_id = nomchamp lol
alors la boucle :
je parcours un recordset normalemen a partir du 2eme enregistremen dou le 1er movenext au dessus
donc je compare l'id qui vaut 2 et jla compare a lid du 2eme enregistremen
s'ils st egaux get_id = nomchamp+1
sinon get_id = get_id+1 pui on sort de la boucle
le 'sinon' sert a "boucher" les vides car les ids sont dans lordre des enregistrements..
le truc bizarre mtn c ke je narrive pa atteindre le 2 eme enregistremen
merci pour ton aide
c vrai kil en faut du courage ^^
S.
bmikl59
Messages postés77Date d'inscriptionlundi 5 septembre 2005StatutMembreDernière intervention14 février 2008 26 janv. 2006 à 16:32
Bon, tout ce que je peux te dire c'est que le movenext doit fctionné.
Est ce que tu entre dans la boucle au moins.....???
Tu devrai initialiser la variable bool a false (pour etre sur que cette condition soit vérifier.)
hanamichiforce
Messages postés17Date d'inscriptionmercredi 4 janvier 2006StatutMembreDernière intervention26 janvier 2007 26 janv. 2006 à 16:45
oui oui jentre ds la boucle..on ma dit ke cetai une fonction risquée ds la durée car les données etait temporairemen enregistrées je vai essayer otre chose jpourrai mettre ici ce ke jai trouver si vous voulez enfin jle metrai suremen bonne soirée