Recherche acces en VB6

Résolu
mertronic Messages postés 28 Date d'inscription mardi 18 janvier 2005 Statut Membre Dernière intervention 9 août 2015 - 8 déc. 2005 à 11:50
mertronic Messages postés 28 Date d'inscription mardi 18 janvier 2005 Statut Membre Dernière intervention 9 août 2015 - 10 déc. 2005 à 10:34
kicou tt le monde...
je poste une tite question avant de passer mon ordi par la fenetre.... voila: j'ai une appli fonctionant avec une base de donnee acces. tout va bien sauf que apres une recherche effectuee avec la commande : "Set Bdm=Bdp.openrecordset ("Select * from mabase where=" & macondition )"
la recherche se passe bien, je trouve l'enregistrement recherché mais ensuite les commandes movenext, moveprevious, movelast et movefirst ne fonctionnent plus ce qui est assez génant. j'ai réussi a contourner le problème en réinitialisant ma commande SET mais cela remet la base de données au premier enregistrement hors, lors d'une recherche sur une base importante, il me faut la prélocalisation avec une recherche de type "Find"(qui semble ne pas fonctionner sous acces) ou "Set" mais ensuite je souhaite rechercher autour de cet enregistrement, si j'ai réinitialisé la base entre les deux c'est mort.... enfin bref j'suis perdu et franchement 3 heures sur movenext et movelast... que la honte s'abatte sur moi... j'suis dégouté....

Merci de votre aide.

9 réponses

Sniper_Vgaerr Messages postés 113 Date d'inscription jeudi 2 décembre 2004 Statut Membre Dernière intervention 14 août 2006
8 déc. 2005 à 12:15
Salut,

Tu as bien mis :
Pour ta clause WHERE, il faut mettre :
"SELECT * FROM MaBase WHERE condition = 'Vrai'"
condition = Champ de la base de donnée
Vrai = contenu du champ condition
Normalement après ca ca doit marcher.
Allé tiens moi au courant
@+
3
Sniper_Vgaerr Messages postés 113 Date d'inscription jeudi 2 décembre 2004 Statut Membre Dernière intervention 14 août 2006
9 déc. 2005 à 13:37
Salut,

Essaie de mettre dans le premier (qui marche pas)

Change dans le premier (qui marche pas) le dbOpenTable en 1
Set Msto = MyBd.OpenRecordset("stock", dbOpenTable)
Set Msto = MyBd.OpenRecordset("stock", 1)

Tiens moi au courant, mais vu que j'ai pas les activeX DAO, je peux pas tester sur mon pc.
3
mertronic Messages postés 28 Date d'inscription mardi 18 janvier 2005 Statut Membre Dernière intervention 9 août 2015
8 déc. 2005 à 13:51
Merci pour cette réponse, je ne suis pas actuellement sur le prog mais, a priori, ca va pas le faire. Mon problème ne concerne pas la recherche par la méthode Set... car ca ca marche bien, mon problème est que cette commande SET bloque les commandes de type movenext movelast etc... je vous fait passer un p'tit bout de prog test réalisé pour que vous puissiez voir l'étendue du désastre!!! lol
merci quand meme...
0
mertronic Messages postés 28 Date d'inscription mardi 18 janvier 2005 Statut Membre Dernière intervention 9 août 2015
8 déc. 2005 à 13:53
enfin je vous l'envoie ce soir... j'suis au taf... MDR...
0

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

Posez votre question
mertronic Messages postés 28 Date d'inscription mardi 18 janvier 2005 Statut Membre Dernière intervention 9 août 2015
9 déc. 2005 à 08:36
Bon après une nouvelle soirée « MoveNext » j'ai un peu avancé.
J'ai une version que je sais po pourquoi elle marche po, et une version qui marche mais j'ai trouvé par erreur? lol
Je commence par celle qui marche po :

Option Explicit
Dim MyBd As Database
Dim Msto As Recordset
Dim ChemDat As String
Private Sub Command1_Click()
Msto.MoveFirst
Text1 = Msto!refst
End Sub
Private Sub Command2_Click()
Msto.MovePrevious
If Msto.BOF Then
Command1_Click
Else
Text1 = Msto!refst
End If
End Sub
Private Sub Command3_Click()
Msto.MoveNext
If Msto.EOF Then
Command4_Click
Else
Text1 = Msto!refst
End If
End Sub
Private Sub Command4_Click()
Msto.MoveLast
Text1 = Msto!refst
End Sub
Private Sub Command5_Click()
Set Msto = MyBd.OpenRecordset("select * from stock where refst='" & Text1 & "'")
If Msto.EOF Then
MsgBox "Pas trouvé!"
Command4_Click
Else
Label1 = Msto!designst
End If
End Sub
Private Sub Form_Load()
ChemDat$ = "c:\ges\data\infoglob.mdb"
Set MyBd = OpenDatabase(ChemDat$)
Set Msto = MyBd.OpenRecordset("stock", dbOpenTable)
End Sub
Private Sub Text1_Change()
If Len(Text1) < 8 Then Exit Sub
Command5_Click
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case vbKey0 To vbKey9
Case vbKeyBack
Case Else
KeyAscii = 0
End Select
End Sub

Dans cette version pas de plantage mais les touches movenext, moveprevious, movefirst et movelast ne marchent pas.

Voici la version qui marche avec les modifs en rose. (je remet que les procedures moifiées)

Option Explicit
Dim MyBd As Database
Dim Msto As Recordset
Dim ChemDat As String
Dim ReCherche As Recordset

Private Sub Command5_Click()
Set ReCherche = MyBd.OpenRecordset("select * from stock where refst='" & Text1 & "'")
If ReCherche.EOF Then
MsgBox "Pas trouvé!"
Command4_Click
Else
Label1 = ReCherche!designst
End If
End Sub
Private Sub Form_Load()
ChemDat$ = "c:\ges\data\infoglob.mdb"
Set MyBd = OpenDatabase(ChemDat$)
Set Msto = MyBd.OpenRecordset("stock", dbOpenTable)
Set ReCherche = MyBd.OpenRecordset("stock", 1)
End Sub


Voila, je pourrais m?arreter là seulement comme j'aime bien comprendre, je voudrai savoir pourquoi la commande « Set Msto = MyBd.OpenRecordset("select * from stock where refst='" & Text1 & "'") » me bloque ma base de donnée et renvoie un Eof et un Bof ???
J'ai probablement fait une connerie mais ou ???

Pour info : VisualBasic 6.0
Access : 2000 (9.0.2812)
Référence : Microsoft DAO 3.6 object library

Voili voilou, et merci pour votre aide.
Michel
0
mertronic Messages postés 28 Date d'inscription mardi 18 janvier 2005 Statut Membre Dernière intervention 9 août 2015
9 déc. 2005 à 08:52
excusez les couleurs sont po passées. myie2 ne marche qu'en textbox classique ... je le meme en couleur!!!


Bon après une nouvelle soirée « MoveNext »j’ai un peu avancé.


J’ai une version que je sais po pourquoi elle marche po, et une version qui marche mais j’ai trouvé par erreur… lol


Je commence par celle qui marche po :





Option Explicit


Dim MyBd As Database


Dim Msto As Recordset


Dim ChemDat As String


Private Sub Command1_Click()


Msto.MoveFirst


Text1 = Msto!refst


End Sub


Private Sub Command2_Click()


Msto.MovePrevious


If Msto.BOF Then


Command1_Click


Else


Text1 = Msto!refst


End If


End Sub


Private Sub Command3_Click()


Msto.MoveNext


If Msto.EOF Then


Command4_Click


Else


Text1 = Msto!refst


End If


End Sub


Private Sub Command4_Click()


Msto.MoveLast


Text1 = Msto!refst


End Sub


Private Sub Command5_Click()


Set Msto = MyBd.OpenRecordset("select * from stock where refst='" & Text1 & "'")


If Msto.EOF Then


MsgBox "Pas trouvé!"


Command4_Click


Else


Label1 = Msto!designst


End If


End Sub


Private Sub Form_Load()


ChemDat$ = "c:\ges\data\infoglob.mdb"


Set MyBd = OpenDatabase(ChemDat$)


Set Msto = MyBd.OpenRecordset("stock", dbOpenTable)


End Sub


Private Sub Text1_Change()


If Len(Text1) < 8 Then Exit Sub


Command5_Click


End Sub


Private Sub Text1_KeyPress(KeyAscii As Integer)


Select Case KeyAscii


Case vbKey0 To vbKey9


Case vbKeyBack


Case Else


KeyAscii = 0


End Select


End Sub




Dans cette version pas de plantage mais les touches movenext, moveprevious, movefirst et movelast ne marchent pas car la recherche "set msto=..." (première ligne de command5_click() bloque la base de donnée sur l'enregistrement courrant.


Voici la version qui marche avec les modifs en rose. (je remet que les procedures moifiées)


Option Explicit


Dim MyBd As Database


Dim Msto As Recordset


Dim ChemDat As String


Dim ReCherche As Recordset




Private Sub Command5_Click()


Set ReCherche = MyBd.OpenRecordset("select * from stock where refst='" & Text1 & "'")


If ReCherche.EOF Then


MsgBox "Pas trouvé!"


Command4_Click


Else


Label1 = ReCherche!designst


End If


End Sub


Private Sub Form_Load()


ChemDat$ = "c:\ges\data\infoglob.mdb"


Set MyBd = OpenDatabase(ChemDat$)


Set Msto = MyBd.OpenRecordset("stock", dbOpenTable)


Set ReCherche = MyBd.OpenRecordset("stock", 1)


End Sub






Voila, je pourrais m’arreter là seulement comme j’aime bien comprendre, je voudrai savoir pourquoi la commande « Set Msto = MyBd.OpenRecordset("select * from stock where refst='" & Text1 & "'") » me bloque ma base de donnée et renvoie un Eof et un Bof ???


J’ai probablement fait une connerie mais ou ???


Pour info : VisualBasic 6.0


base de donnée Access : 2000 (9.0.2812)


Référence : Microsoft DAO 3.6 object library


Voili voilou, et merci pour votre aide.


Michel
0
mertronic Messages postés 28 Date d'inscription mardi 18 janvier 2005 Statut Membre Dernière intervention 9 août 2015
9 déc. 2005 à 09:00
certaines couleur de mon texte n'etant pas connues du gestionnaire, les couleurs ne sont a nouveau pas passées!!!! oui ben arrêtez de rire, c pas bien de se moquer
Bon après une nouvelle soirée « MoveNext »j’ai un peu avancé.


J’ai une version que je sais po pourquoi elle marche po, et une version qui marche mais j’ai trouvé par erreur… lol


Je commence par celle qui marche po :





Option Explicit


Dim MyBd As Database


Dim Msto As Recordset


Dim ChemDat As String


Private Sub Command1_Click()


Msto.MoveFirst


Text1 = Msto!refst


End Sub


Private Sub Command2_Click()


Msto.MovePrevious


If Msto.BOF Then


Command1_Click


Else


Text1 = Msto!refst


End If


End Sub


Private Sub Command3_Click()


Msto.MoveNext


If Msto.EOF Then


Command4_Click


Else


Text1 = Msto!refst


End If


End Sub


Private Sub Command4_Click()


Msto.MoveLast


Text1 = Msto!refst


End Sub


Private Sub Command5_Click()


Set Msto = MyBd.OpenRecordset("select * from stock where refst='" & Text1 & "'")


If Msto.EOF Then


MsgBox "Pas trouvé!"


Command4_Click


Else


Label1 = Msto!designst


End If


End Sub


Private Sub Form_Load()


ChemDat$ = "c:\ges\data\infoglob.mdb"


Set MyBd = OpenDatabase(ChemDat$)


Set Msto = MyBd.OpenRecordset("stock", dbOpenTable)


End Sub


Private Sub Text1_Change()


If Len(Text1) < 8 Then Exit Sub


Command5_Click


End Sub


Private Sub Text1_KeyPress(KeyAscii As Integer)


Select Case KeyAscii


Case vbKey0 To vbKey9


Case vbKeyBack


Case Else


KeyAscii = 0


End Select


End Sub




Dans cette version pas de plantage mais les touches movenext, moveprevious, movefirst et movelast ne marchent pas.


Voici la version qui marche avec les modifs en rose. (je remet que les procedures moifiées)


Option Explicit


Dim MyBd As Database


Dim Msto As Recordset


Dim ChemDat As String


Dim ReCherche As Recordset




Private Sub Command5_Click()


Set ReCherche = MyBd.OpenRecordset("select * from stock where refst='" & Text1 & "'")


If ReCherche.EOF Then


MsgBox "Pas trouvé!"


Command4_Click


Else


Label1 = ReCherche!designst


End If


End Sub


Private Sub Form_Load()


ChemDat$ = "c:\ges\data\infoglob.mdb"


Set MyBd = OpenDatabase(ChemDat$)


Set Msto = MyBd.OpenRecordset("stock", dbOpenTable)


Set ReCherche = MyBd.OpenRecordset("stock", 1)


End Sub






Voila, je pourrais m’arreter là seulement comme j’aime bien comprendre, je voudrai savoir pourquoi la commande « Set Msto = MyBd.OpenRecordset("select * from stock where refst='" & Text1 & "'") » me bloque ma base de donnée et renvoie un Eof et un Bof ???


J’ai probablement fait une connerie mais ou ???


Pour info : VisualBasic 6.0


Access : 2000 (9.0.2812)


Référence : Microsoft DAO 3.6 object library


Voili voilou, et merci pour votre aide.


Michel
0
mertronic Messages postés 28 Date d'inscription mardi 18 janvier 2005 Statut Membre Dernière intervention 9 août 2015
9 déc. 2005 à 23:45
arf... impossible de valider la réponse, mais bon, vendredi 23h30, je vais plutot aller faire des galipettes avec ma cop's , mais promis j'essaye demain et je te dis... lol
de toute facon meme si ca marche pas et ben Merci d'essayer de m'aider. si je trouve pas une soluce demain, je migre ma base de donnée en version antérieure et j'utilise le contrôle data meme si c un peu plus chiant car le contrôle est figé à la feuille et pour l'adresser fo écrire le nom de la feuille (hannn le feignant... tous des feignants les informaticiens, meme les débutants...lol)
Michel.
0
mertronic Messages postés 28 Date d'inscription mardi 18 janvier 2005 Statut Membre Dernière intervention 9 août 2015
10 déc. 2005 à 10:34
Sniiiif, ca marche pooooo, j'ai essayé avec 1, avec 2 puis 4 puis 8 et a partir de 16 ca plante...

pour ceux a qui cela arrive (impossible d'ouvrir la base de donnée dans acces (format de base de donnee non reconnu)) et en attendant de trouver mieux:
ouvrir le fichier "mdb" avec Access 2000 choisir "outils" puis "utilitaire de base de donnee" et "convertir a la version précedente de la base acces" donner ensuite un nom de fichier et voilaaaaaa!!! a petite précision, les données la structure de base et les index sont transmis, pour le reste ben ché po!!!

Salutte ta tousse MDR.
0
Rejoignez-nous