Probleme de recordset dans base de données

gg -  
Tom_Sayer Messages postés 26 Statut Membre -
salut tt le monde !!!
je dois poursuivre le programme de quelqu'un et je ne comprend pas l'origine de l'erreur n°91 dont le code est :
Private Sub cmdUpdate_Click()
'Dim fso As New FileSystemObject
Dim Nom As String
'fso.CopyFile "\\Seasv2\Duplication\BD_gest_prog\Logiciels.mdb", "C:\Temp\Base Donnée\"
Nom = "Nom = '" & DataCombo1.Text & "'"
frmNouveauService.Data1.DatabaseName = frmCheminBase.txtFields.Text
frmNouveauService.Data1.RecordSource = "NouveauService"
frmNouveauService.Adodc1.ConnectionString = frmCheminOLE.txtFields.Text
frmNouveauService.Adodc1.RecordSource = "NouveauService"
frmNouveauService.Data1.Refresh
frmNouveauService.Adodc1.Refresh
frmNouveauService.Data1.Recordset.FindFirst Nom 'erreur à cette ligne
If frmService2.DataCombo1.Text = "" Then
MsgBox "Aucun service n'a été sélectionner, veuillez vérifier votre saisie"
Else
If frmNouveauService.Data1.Recordset.Fields("Type de tableau") = "Divers Atelier et BE" Then
'MsgBox "Vous n'avez pas accès à ces tableaux mais uniquement aux tableaux BE SEA"
frmTableauType1.Data1.DatabaseName = frmCheminBase.txtFields.Text
frmTableauType1.Data1.RecordSource = "TableauType1"
frmTableauType1.Show
frmTableauType1.Data1.Refresh
End If
If frmNouveauService.Data1.Recordset.Fields("Type de tableau") = "Problèmes programmes" Then
'MsgBox "Vous n'avez pas accès aux problèmes du BE SEA, choisissez un autre service"
frmTableauType2.Data1.DatabaseName = frmCheminBase.txtFields.Text
frmTableauType2.Data1.RecordSource = "TableauType2"
frmTableauType2.Show
frmTableauType2.Data1.Refresh
End If
End If
End Sub

merci d'avance
ciao
A voir également:

14 réponses

mouse Messages postés 136 Statut Membre 10
 
Salut,

pas tres explicite ton code. C'est quoi la description de l'erreur 91 ?
1
mouse Messages postés 136 Statut Membre 10
 
je suis desole, mais j'ai un peu de mal a suivre sans avoir la base de donnee sous les yeux...
essai ca :

Private Sub cmdUpdate_Click()
dim db as database, re as recordset
Dim Nom As String

Set db=OpenDatabase(frmCheminBase.txtFields.Text)
set re=db.Openrecordset("NouveauService")

Nom = "Nom = '" & DataCombo1.Text & "'"
frmNouveauService.Data1.DatabaseName = frmCheminBase.txtFields.Text
frmNouveauService.Data1.RecordSource = "NouveauService"
frmNouveauService.Adodc1.ConnectionString = frmCheminOLE.txtFields.Text
frmNouveauService.Adodc1.RecordSource = "NouveauService"

re.Findfirst Nom

if not re.nomatch then
frmNouveauService.Data1=re(le champ adecouate, la je sais pas...)
end if

If frmService2.DataCombo1.Text = "" Then
MsgBox "Aucun service n'a été sélectionner, veuillez vérifier votre saisie"
Else
If frmNouveauService.Data1.Recordset.Fields("Type de tableau") = "Divers Atelier et BE" Then
........................
1
gg
 
il donne
variable objet ou variable bloc with non définie
0
mouse Messages postés 136 Statut Membre 10
 
ok

en fait tu as un objet, et tu essaie d'affecter un valeur a une propriete qui n'existe pas sur cet objet.

Sais-tu a quel ligne il plante ?
0
gg
 
oui je l'ai deja marqué

à la ligne de code

frmNouveauService.Data1.Recordset.FindFirst Nom

merci
0

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

Posez votre question
mouse Messages postés 136 Statut Membre 10
 
ok, j'avais pas vus...

c'est quoi tous les objets
frmNouveauService "un sous formulaire ?"
Data1 ca je sais pas...

En gros, tu peux pas faire une recherche sur l'objet Data1, si c'est une combo, affecte lui directement la valeur.
0
gg
 
les objets frmNouveauService sont des form(feuilles)
qui donnent des fenetres et j'en est plusieurs

j'espere que c'est assez explicite

sinon data1 et adocd1 sont des barres de défilement

je te remercie vraiment de m'aider
0
gg
 
ne croi tu pas que le recordset n'a rien a faire la ?
?????
0
gg
 
pour que je sache ce que je doit mettre dans re(....)

tu peut me dire a quoi correspond cette commande

if not re.nomatch then
frmNouveauService.Data1=re(le champ adecouate, la je sais pas...)
end if

merci
0
mouse Messages postés 136 Statut Membre 10
 
Je pense que "NouveauService" est une table ou une requete, et frmCheminBase.txtFields.Text est une base de donnees

donc lorsque j'ecris
Set db=OpenDatabase(frmCheminBase.txtFields.Text)
set re=db.Openrecordset("NouveauService")
je dis que db est la base de donnees et re est la table ou bien la requete dans cette base de donnees

ensuite
re.Findfirst Nom
je regarde si le critere NOM est dans la table

et si il le trouve
if not re.nomatch then
frmNouveauService.Data1=re(le champ adecouate, la je sais pas...)
end if

je lui affecte la valeur du champs. En gros ecrit re(nom_du_champs dont tu veux la valeur)

je pense que le nom du champs s'appele Nom
0
gg
 
tu es excellent !!!!!!!!

c'est bon mais c'est quoi la référence pour FindFirst ?

(a part ça tt va bien)
0
gg
 
tu es excellent !!!!!!!!

c'est bon mais c'est quoi la référence pour FindFirst ?

(a part ça tt va bien)
0
gg
 
moultes mercis pour ton aide !!!!!!!!

je dois y aller

j'espere que tu sera encore la longtemps , il me reste quelque question
0
mouse Messages postés 136 Statut Membre 10
 
FIndFitrst te permet de trouver une valeur dans un objet recordset.

dans ton programme, il va chercher dans le champs Nom la valeur DataCombo1.Text
car au debut tu as ecrit :
Nom = "Nom = '" & DataCombo1.Text & "'"
0
gg
 
salut !!

lors de la compilation il me met
méthode ou membre de donnée introuvable au niveau du findfirst

il fauut peut etre une librairie spéial?
(mais j ene sais pas laquelle)
0
mouse Messages postés 136 Statut Membre 10
 
Salut,

bon avant tout cofirme moi que :
NouveauService est soit une table, soit une requete
frmCheminBase.txtFields.Text est une base de donnees

si NouveauService est une table ou une requete, verifie qu'il y a le champs nom.
0
Tom_Sayer Messages postés 26 Statut Membre
 
bonsoir
<
si vous avez ce message surement l'ouverure de la base a echouée c'est pourqoui le recordset se bloque avec votre message .........
lancez un module et tapez une requete open_base
puis au niveau de
private sub _form load ()
call open _base
end sub
surement l'open de la base a échoué
de plus j'ai remarqué ds votrre code que le paramétrage se rélaise ds les propriété du Data control , flexgrid , .... pour évite d'avoir un code ambigu plus on simplifie plus on réduit la marge d'erreur

Peut être le tableau au musée est le seul objet qui écoute l

pour mémoire
lancez un module independent

dim db as database
dim st as recordset
public sub open _base ()
set db= opendatabase("c:\gestion\service.mdb")
set st= db.openrecordset("client", dbopentable")
msgbox" open base réussi",vbcritical
0
mouse Messages postés 136 Statut Membre 10
 
OK, je suis desole j'ai fait une erreur, comme je te le dit plus haut, confirme moi que
NouveauService est soit une table, soit une requete
frmCheminBase.txtFields.Text est une base de donnees
si NouveauService est une table ou une requete, verifie qu'il y a le champs nom

Enfin, si NouveauService est une table, a la place d'ecrire
set re=db.Openrecordset("NouveauService")

ecris
set re=db.Openrecordset("SELECT NouveauService.* FROM NouveauService")

si c'est une requete, c'est un peu plus compliquer

Dim Req As QueryDef
Set Req = db.QueryDefs("NouveauService")
set re=db.openrecordset(req.sql)

voila, si tu veux ecrit moi un mail, je te repondrai plus vite

A+
0
mouse Messages postés 136 Statut Membre 10
 
je vais faire un peu plus court, dan le cas ou NouveauService est un requete, ecrit juste

set re=db.openrecordset(db.querydefs("NouveauService").sql)
0
gg
 
pourrait tu m'expliquer la différence entre une table et une requete ?
merci
0
gg
 
je sais pas pourquoi mais j'ai un probleme avec le
FindFirst

il me met
méthode ou membre de donnée introuvable
0
gg
 
voici une adresse ou tu peut me laisser tes info

christophe.dumetz@arc-intl.com

et le tien ?
0
mouse Messages postés 136 Statut Membre 10
 
une table contient les donnees, une requete permet de trier les donnees d'une table

va voir la, y'a un tutorial tres bien fait
http://www.self-access.com/
0
gg
 
je n'y est pas accés
mais c'est une table

le probleme ,c'est qu'il me donne un message d'erreur au niveau du FindFirst et je vois pas de ou ca vient
il me met methode ou membre de données introuvable
0
mouse Messages postés 136 Statut Membre 10
 
OK, donc si NouveauService est une table,
a la place d'ecrire
set re=db.Openrecordset("NouveauService")

ecris
set re=db.Openrecordset("SELECT NouveauService.* FROM NouveauService")
0
Tom_Sayer Messages postés 26 Statut Membre
 
slt mouse :)
set re=db.Openrecordset("NouveauService")
ajoutez aussi :
set re=db.Openrecordset("NouveauService", dbopentable)
peut être c'est la cause ! précisez le type "table , snabshot ,
dbopentable




2 choses impossible à cacher : Amour & Ivresse.
0