Recordset sous vba-acces

zefoucool Messages postés 1 Date d'inscription jeudi 28 mars 2002 Statut Membre Dernière intervention 28 mars 2002 - 28 mars 2002 à 09:49
cs_rafano Messages postés 14 Date d'inscription mardi 12 mars 2002 Statut Membre Dernière intervention 31 juillet 2002 - 28 mars 2002 à 15:27
Voici le code source de l'action open form d'un formulaire acces. L'ouverture se fait via un bouton sur un autre formulaire avec la commande DoCmd.Open form. L'argument OpenArgs contient une requête select (qui fonctionne) renvoyant un champ de type entier long.

Cependant, je reçois un message - incompatibilité de type au niveau de l'initialisation du recordset

Private Sub Form_Open(Cancel As Integer)
Dim sql As String
Dim answer As Variant
Dim force As Integer
Dim dext As Integer
Dim constit As Integer
Dim sag As Integer
Dim Intel As Integer
Dim Chari As Integer
Dim Values(6) As Integer
Dim Classe As String
Dim Race As String
Dim joueur As String
Dim idpj As String
Dim db As Database
Dim req As QueryDef
Dim recup As Recordset
Set db = CurrentDb()
Set recup = New ADODB.Recordset <- ceci a été ajouté après fouille minutieuse d'internet, mais cela n'a apparament aucun effet!

sql = OpenArgs
Set req = db.CreateQueryDef("", sql) <- j'ignore si c'est vraiment utile
Set recup = req.OpenRecordset <- c'est ici que je reçois l'erreur. J'ai tenté ceci aussi avec le même résultat
Set recup = db.openrecorset(sql)
joueur = recup.Fields(0).value <- c'est bien ça, non?
Me.list_values.RowSourceType = "liste valeurs"
idpj = InputBox("Entrez Un Idetifiant à votre nouveau personnage", "Creation d'un personnage (Avant tout!)")
Me.idpj = idpj
sql = "Insert Into Personnage (idpj) Values ('" & idpj & "')"
Set req = db.CreateQueryDef("", sql)
req.Execute

For cpt = 1 To 6
answer = InputBox("Veuillez Lancer 4 dés à 6 faces et entrez les valeurs ci-dessous" & Chr(13) & Chr(10) & "Ou appuyer sur Annuler pour activer l'auto-genertion de nombre", "Création de personnage(étape 1)")
Randomize
If answer = "" Then
answer = Int((6 * Rnd) + 1) + Int((6 * Rnd) + 1) + Int((6 * Rnd) + 1)
MsgBox "Le generateur a produit" & answer
End If
Values(cpt) = answer
Me.list_values.AddItem (answer)
Next cpt

Race = InputBox("Choississez une Race parmis les suivantes (ou une sous-race)" & Chr(13) & Chr(10) & " Humain, Halfelin, Gnome, Demi-Orque, Nain, Demi-Elfe, Elfe", "Création de personnage(étape 2)")
Classe = InputBox("Choississez une Classe parmis les suivantes (ou une sous-classe)" & Chr(13) & Chr(10) & " Barbare, Barde, Druide, Ensorceleur, Guerrier, Magicien, Moine, Paladin, Prêtre, Rôdeur, Roublard", "Création de personnage(étape 2)")

MsgBox "Appliquer les Valeurs aux differentes caracteristiques", , "Création de personnage(étape 3)"

sql = "INSERT INTO Personnage (idjoueur, idpj, race, classe) Values('" & joueur & "', '" & idpj & "', '" & Race & "', '" & Classe & "')"
Set req = db.CreateQueryDef("", sql)
req.Execute

End Sub

1 réponse

cs_rafano Messages postés 14 Date d'inscription mardi 12 mars 2002 Statut Membre Dernière intervention 31 juillet 2002 1
28 mars 2002 à 15:27
Suggestions :

Tes codes
>sql = OpenArgs
Set req = db.CreateQueryDef("", sql) <- j'ignore si c'est vraiment utile
Set recup = req.OpenRecordset <- c'est ici que je reçois l'erreur. J'ai tenté ceci aussi avec le même résultat
Set recup = db.openrecorset(sql)
joueur = recup.Fields(0).value <- c'est bien ça, non?
Me.list_values.RowSourceType = "liste valeurs"
Set recup = req.OpenRecordset

Mes codes:0>Set recup New ADODB.Recordset 'sql OpenArgs
1>Set recup = db.openrecorset(sql)
1>If recup.recordcount <> 0 then1>joueur recup("NomChamp0").value 'Me.list_values.RowSource sql '<Pour afficher la liste de tous les joueurs

Si t'as besoin d'aide sur les recordset, sélectionne le mot recordset du code et clic sur F1.

A+
0
Rejoignez-nous