Generer un identifiant vb probleme : impossible de trouver lobjet

hanamichiforce Messages postés 17 Date d'inscription mercredi 4 janvier 2006 Statut Membre Dernière intervention 26 janvier 2007 - 26 janv. 2006 à 10:44
hanamichiforce Messages postés 17 Date d'inscription mercredi 4 janvier 2006 Statut Membre Dernière intervention 26 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

recordset.Source = marequete
recordset.Open , , adOpenStatic, adLockReadOnly
MsgBox (recordset.RecordCount)
recordset.MoveLast

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

10 réponses

bmikl59 Messages postés 77 Date d'inscription lundi 5 septembre 2005 Statut Membre Dernière intervention 14 février 2008
26 janv. 2006 à 11:20
Salut, je suis pas sur de pouvoir t'aider, mais au cas ou (parce que je vais essayer quand meme), j'aurais une question.

Quand tu dis qu'il ne trouve pas l'objet, de quel objet parle tu?
C'est nomchamp qui trove pas??
0
bmikl59 Messages postés 77 Date d'inscription lundi 5 septembre 2005 Statut Membre Dernière intervention 14 février 2008
26 janv. 2006 à 11:24
Est ce que t'as testé un truc du genre :

recordset.fields![nomchamps]
0
hanamichiforce Messages postés 17 Date d'inscription mercredi 4 janvier 2006 Statut Membre Dernière intervention 26 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 .
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
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

CR
0
hanamichiforce Messages postés 17 Date d'inscription mercredi 4 janvier 2006 Statut Membre Dernière intervention 26 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..
0
bmikl59 Messages postés 77 Date d'inscription lundi 5 septembre 2005 Statut Membre Dernière intervention 14 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)
0
hanamichiforce Messages postés 17 Date d'inscription mercredi 4 janvier 2006 Statut Membre Dernière intervention 26 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.
0
bmikl59 Messages postés 77 Date d'inscription lundi 5 septembre 2005 Statut Membre Dernière intervention 14 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.)
0
hanamichiforce Messages postés 17 Date d'inscription mercredi 4 janvier 2006 Statut Membre Dernière intervention 26 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
0
Rejoignez-nous