ADO - moveprevious - recordset - access2000 - CacheSize - deplacement arriere

sansoussix Messages postés 8 Date d'inscription mardi 4 mars 2003 Statut Membre Dernière intervention 18 mars 2003 - 6 mars 2003 à 12:23
sansoussix Messages postés 8 Date d'inscription mardi 4 mars 2003 Statut Membre Dernière intervention 18 mars 2003 - 6 mars 2003 à 17:12
bonjour, je suis nouveau en vb et j'essaie d'effectuer des lectures dans une base de donnees access 2000.
J'ai utilise le provider 4.0 pour ma connection

strCnn = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source="

la connection ne pose pas de probleme.
Pour l'instant j'arrive a lire dans le recortset mais seulement en foward avec la methode suivante :

Private Sub cmdNext_Click()
Dim strAnswer As String
Dim Item As Variant
If Not Rs1.EOF Then
Rs1.MoveNext
If Not Rs1.EOF Then
For Each Item In Rs1.Fields strAnswer strAnswer & Item.Name & " " & Item.Value & vbCrLf
Next
' Rs1.CacheSize = Rs1.CacheSize + 1
Text2.Text = strAnswer
Else
MsgBox "No more !", vbExclamation
End If
Else
MsgBox "No more !", vbExclamation
End If
End Sub

avec rs1 mon recordset

je n'arrive par a lire les record dans l'autre sens.
j'ai essayer la methode moveprevious qui n'a pas fonctionnee.

peu etre un probleme de curseur.
ensuite je suis alle voir du cote de la propriete CacheSize esperant pouvoir agrandir le buffer du recordset de maniere a pouvoir me balader dans le sens arriere avec la methode move.

Private Sub cmdPrev_Click()
Dim strAnswer As String
Dim Item As Variant
If Not Rs1.BOF Then
If Rs1.CacheSize <> 0 Then
Rs1.Move -1
Rs1.CacheSize = Rs1.CacheSize - 1
For Each Item In Rs1.Fields strAnswer strAnswer & Item.Name & " " & Item.Value & vbCrLf
Next
Text2.Text = strAnswer
Else
MsgBox "No more previous!", vbExclamation
End If
Else
MsgBox "No more previous!", vbExclamation
End If

mais ca ne marche toujours pas, alors je ne sais plus trop quoi essayer.

Toutes les propositions/solutions seront les bienvenues !
Merci
A voir également:

8 réponses

Pem13lw Messages postés 73 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 23 février 2005
6 mars 2003 à 14:14
il faut que tu change la propriété CursorType de ton recordset pour la mettre à adOpenDynamic.

_________________________________________________
La seule chose que non avons à faire ici-bas c'est
choisir quoi faire du temps qui nous à été imparti !!!
0
sansoussix Messages postés 8 Date d'inscription mardi 4 mars 2003 Statut Membre Dernière intervention 18 mars 2003
6 mars 2003 à 14:31
d'accord mais ca j'avais deja essayer, voici ma procedure de connection :

Private Sub Form_Load()

Dim strCnn As String

Dim sTmp As String
Dim SQLtext As String
Dim strAnswer As String
Dim Msg As String
Dim nbRecordAffected As Long
Dim Item As Variant

Dim First, UserPath As String

'error handler
On Error GoTo ErrorHandler

'sTable = List2.List(0) ' the table we are going to copy
sTmp = "C:\DEV\data base\db.mdb"

strCnn = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source="
strCnn = strCnn & sTmp

' create and open a connection to the databse
Set cnn1 = New ADODB.Connection
cnn1.Open strCnn

Set Rs1 = New ADODB.Recordset
Rs1.CursorType = adOpenDynamic
Rs1.CursorLocation = adUseClientBatch

'Rs1.CursorType = adOpenStatic
'Rs1.CursorLocation = adUseClient

SQLtext = "SELECT * from tblPatData"

' runs the SQL statement
Set Rs1 = cnn1.Execute(SQLtext, nbRecordAffected, adCmdText)

For Each Item In Rs1.Fields strAnswer strAnswer & Item.Name & " " & Item.Value & vbCrLf
Next
Text2.Text = strAnswer

ErrorHandler: ' Error-handling routine.
Select Case Err.Number ' Evaluate error number.
Case 0 'no error
'MsgBox "Access to data without error!!", vbOKOnly, "ADO Copy System Message"
Case Else
Msg = "Unexpected error #" & Str(Err.Number)
Msg = Msg & " occurred: " & Err.Description
' Display message box with Stop sign icon and
' OK button.
MsgBox Msg, vbCritical
Resume Next ' Resume execution at same line
' that caused the error.
End Select

End Sub

donc la solution que tu me donne ne fonctionne pas.
faut il declarer le CursorType avant le Rs1.CursorLocation
et quel parametre donner a ce dernier.
0
sansoussix Messages postés 8 Date d'inscription mardi 4 mars 2003 Statut Membre Dernière intervention 18 mars 2003
6 mars 2003 à 14:32
-------------------------------
Réponse au message :
-------------------------------

>
>
> d'accord mais ca j'avais deja essayer, voici ma procedure de connection :
>
> Private Sub Form_Load()
>
> Dim strCnn As String
>
> Dim sTmp As String
> Dim SQLtext As String
> Dim strAnswer As String
> Dim Msg As String
> Dim nbRecordAffected As Long
> Dim Item As Variant
>
> Dim First, UserPath As String
>
> 'error handler
> On Error GoTo ErrorHandler
>
> 'sTable = List2.List(0) ' the table we are going to copy
> sTmp = "C:\DEV\data base\db.mdb"
>
> strCnn = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source="
> strCnn = strCnn & sTmp
>
> ' create and open a connection to the databse
> Set cnn1 = New ADODB.Connection
> cnn1.Open strCnn
>
> Set Rs1 = New ADODB.Recordset
> Rs1.CursorType = adOpenDynamic
> Rs1.CursorLocation = adUseClientBatch
>
> 'Rs1.CursorType = adOpenStatic
> 'Rs1.CursorLocation = adUseClient
>
> SQLtext = "SELECT * from tblPatData"
>
> ' runs the SQL statement
> Set Rs1 = cnn1.Execute(SQLtext, nbRecordAffected, adCmdText)
>
> For Each Item In Rs1.Fields> strAnswer strAnswer & Item.Name & " " & Item.Value & vbCrLf
> Next
> Text2.Text = strAnswer
>
> ErrorHandler: ' Error-handling routine.
> Select Case Err.Number ' Evaluate error number.
> Case 0 'no error
> 'MsgBox "Access to data without error!!", vbOKOnly, "ADO Copy System Message"
> Case Else
> Msg = "Unexpected error #" & Str(Err.Number)
> Msg = Msg & " occurred: " & Err.Description
> ' Display message box with Stop sign icon and
> ' OK button.
> MsgBox Msg, vbCritical
> Resume Next ' Resume execution at same line
> ' that caused the error.
> End Select
>
> End Sub
>
> donc la solution que tu me donne ne fonctionne pas.
> faut il declarer le CursorType avant le Rs1.CursorLocation
> et quel parametre donner a ce dernier.
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > il faut que tu change la propriété CursorType de ton recordset pour la mettre à adOpenDynamic.
> >
> > _________________________________________________
> > La seule chose que non avons à faire ici-bas c'est
> > choisir quoi faire du temps qui nous à été imparti !!!
> >
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > bonjour, je suis nouveau en vb et j'essaie d'effectuer des lectures dans une base de donnees access 2000.
> > > J'ai utilise le provider 4.0 pour ma connection
> > >
> > > strCnn = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source="
> > >
> > > la connection ne pose pas de probleme.
> > > Pour l'instant j'arrive a lire dans le recortset mais seulement en foward avec la methode suivante :
> > >
> > > Private Sub cmdNext_Click()
> > > Dim strAnswer As String
> > > Dim Item As Variant
> > > If Not Rs1.EOF Then
> > > Rs1.MoveNext
> > > If Not Rs1.EOF Then
> > > For Each Item In Rs1.Fields> > > strAnswer strAnswer & Item.Name & " " & Item.Value & vbCrLf
> > > Next
> > > ' Rs1.CacheSize = Rs1.CacheSize + 1
> > > Text2.Text = strAnswer
> > > Else
> > > MsgBox "No more !", vbExclamation
> > > End If
> > > Else
> > > MsgBox "No more !", vbExclamation
> > > End If
> > > End Sub
> > >
> > > avec rs1 mon recordset
> > >
> > > je n'arrive par a lire les record dans l'autre sens.
> > > j'ai essayer la methode moveprevious qui n'a pas fonctionnee.
> > >
> > > peu etre un probleme de curseur.
> > > ensuite je suis alle voir du cote de la propriete CacheSize esperant pouvoir agrandir le buffer du recordset de maniere a pouvoir me balader dans le sens arriere avec la methode move.
> > >
> > > Private Sub cmdPrev_Click()
> > > Dim strAnswer As String
> > > Dim Item As Variant
> > > If Not Rs1.BOF Then
> > > If Rs1.CacheSize <> 0 Then
> > > Rs1.Move -1
> > > Rs1.CacheSize = Rs1.CacheSize - 1
> > > For Each Item In Rs1.Fields> > > strAnswer strAnswer & Item.Name & " " & Item.Value & vbCrLf
> > > Next
> > > Text2.Text = strAnswer
> > > Else
> > > MsgBox "No more previous!", vbExclamation
> > > End If
> > > Else
> > > MsgBox "No more previous!", vbExclamation
> > > End If
> > >
> > > mais ca ne marche toujours pas, alors je ne sais plus trop quoi essayer.
> > >
> > > Toutes les propositions/solutions seront les bienvenues !
> > > Merci
> > >
> >
>
0
Pem13lw Messages postés 73 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 23 février 2005
6 mars 2003 à 15:24
a la place de :
Set Rs1 = cnn1.Execute(SQLtext, nbRecordAffected, adCmdText)

utilise

Rs1.Open SQLtext, cnn1, adOpenDynamic, adLockOptimistic

_________________________________________________
La seule chose que non avons à faire ici-bas c'est
choisir quoi faire du temps qui nous à été imparti !!!
0

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

Posez votre question
Pem13lw Messages postés 73 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 23 février 2005
6 mars 2003 à 15:25
désolé, j'aie oublié de te dire de remettre le cusorlocation à aduseclient
_________________________________________________
La seule chose que non avons à faire ici-bas c'est
choisir quoi faire du temps qui nous à été imparti !!!
0
sansoussix Messages postés 8 Date d'inscription mardi 4 mars 2003 Statut Membre Dernière intervention 18 mars 2003
6 mars 2003 à 15:50
merci en fait quelqu'un d'autre venaitt de me donner la solution sur un forum de Microsoft.
c'est ballot en fait, c'etait la commande cnn1.execute qui modifait toutes les proprietes de mon recordset.
En tout cas merci pour ton aide, maintenant je vais chercher a ajouter et enlever des record a l'interieur de ma base de donnees.

Pour l'instant le but est juste de pouvoir me connecter en tant que client sur la base de donnee via une interface vb mais apres il faudra que je puisse definir differents droit d'acces a cette base et que je puisse y acceder via une page asp. Est ce que tu aurais des tips la dessus, j'ai pas encore fait d'asp ni trop de securite base de donnees.

Merci.
0
Pem13lw Messages postés 73 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 23 février 2005
6 mars 2003 à 17:03
Pour une base access, la sécurité est pas trop compliqué car t'es obliger de la définir à l'aide du code et d'une ou plusieurs tables contrairement à Oracle ou SqlServer.

Si tu veux plus d'aide au niveau de la gestion d'accées à la base dis le je developperais un peu plus ce coté.

D'un autre coté ,je connais un peu l'Asp mais y'a un bail que j'y ai pas retoucher...
Tu devrais trouver de l'aide sur http://www.aspfr.com

_________________________________________________
La seule chose que non avons à faire ici-bas c'est
choisir quoi faire du temps qui nous à été imparti !!!
0
sansoussix Messages postés 8 Date d'inscription mardi 4 mars 2003 Statut Membre Dernière intervention 18 mars 2003
6 mars 2003 à 17:12
eh bien merci pour tout a a une prochaine j'espere.

Sansoussix
0
Rejoignez-nous