OVH Cloud OVH Cloud

PB recordset!!!!!

18 réponses
Avatar
fabrizio-r
Hello a tous,

Quelqu'un peut il me dire comment je peut recuperer=20
l'=E9tat actif de mon recordset muni d'une table de=20
plusieurs champs, dans une variable???
De quel type doit etre cette variable???

Merci d 'avance,

Fabrice.

10 réponses

1 2
Avatar
Clive Lumb
Hello Fabrice,

Ce que tu cherches c'est le Bookmark (c'est un long je crois).
Recordset.bookmark rend une valeur unique qui correspond à la ligne sur
laquelle on se trouve0.
Exemple
rs.find "Nom = 'fabrice'"
MyBM =rs.bookmark
rs.movefirst
Debug.print rs.fields("Nom")
---------> Clive
rs.bookmark=MyBM
Debug.print rs.fields("Nom")
---------> Fabrice

Notons que le Datagrid a lui une collection de Bookmarks, ce qui permet de
marquer plusieurs lignes (pour effacement par exemple)
Grosso modo on fait
'Effacer les bookmarks
If (DataGrid1.SelBookmarks.Count <> 0) Then
DataGrid1.SelBookmarks.Remove 0
End If
'Ajouter un bookmark
DataGrid1.SelBookmarks.Add rs.Bookmark



"fabrizio-r" a écrit dans le message
de news:2a3d01c42851$60fc5c70$
Hello a tous,

Quelqu'un peut il me dire comment je peut recuperer
l'état actif de mon recordset muni d'une table de
plusieurs champs, dans une variable???
De quel type doit etre cette variable???

Merci d 'avance,

Fabrice.
Avatar
fabrizio-r
J ai bien essayé avec le bookmark mais vb me génère
l'erreur suivante :

"Le moteur de la base de données Microsoft Jet ne
reconnait pas 'task_manager.*' en tant que nom de champ
ou expression correcte"

mon code est le suivant :

If btn.Key = "CLOSETASK" Then
Set monrs4 = New ADODB.Recordset

monrs4.Open "INSERT INTO taches_closes SELECT
task_manager.* FROM task_manager WHERE" &
Adodc1.Recordset.Bookmark, cnn1, adOpenKeyset,
adLockOptimistic

Adodc2.Refresh

monrs4.Open "SELECT * FROM taches_closes", cnn1,
adOpenKeyset, adLockOptimistic

Timer2.Enabled = True

End If

peut etre est ce un problème de synthaxe, en tout cas le
bookmark se positionne bien sur l'enregistrement que je
veu quand je me déplace dans ma table.

Fabrice.



-----Message d'origine-----
Hello Fabrice,

Ce que tu cherches c'est le Bookmark (c'est un long je


crois).
Recordset.bookmark rend une valeur unique qui correspond


à la ligne sur
laquelle on se trouve0.
Exemple
rs.find "Nom = 'fabrice'"
MyBM =rs.bookmark
rs.movefirst
Debug.print rs.fields("Nom")
---------> Clive
rs.bookmark=MyBM
Debug.print rs.fields("Nom")
---------> Fabrice

Notons que le Datagrid a lui une collection de


Bookmarks, ce qui permet de
marquer plusieurs lignes (pour effacement par exemple)
Grosso modo on fait
'Effacer les bookmarks
If (DataGrid1.SelBookmarks.Count <> 0) Then
DataGrid1.SelBookmarks.Remove 0
End If
'Ajouter un bookmark
DataGrid1.SelBookmarks.Add rs.Bookmark



"fabrizio-r" a


écrit dans le message
de news:2a3d01c42851$60fc5c70$
Hello a tous,

Quelqu'un peut il me dire comment je peut recuperer
l'état actif de mon recordset muni d'une table de
plusieurs champs, dans une variable???
De quel type doit etre cette variable???

Merci d 'avance,

Fabrice.


.



Avatar
Clive Lumb
Voici comment je le fais (j'ai horreur du SQL donc je le fait manuellement)
Dim rsField As adodb.Field
Dim OKForDel As Boolean
Dim RSFIELDS As adodb.Fields
Suite à un clique droite sur le sélecteur d'un datagrid, je mets dans
SearchStr
SearchStr = "Ref_etude = " & "'" & grdDataGrid.Columns(0).Text & "'"
Puis j'ouvre un msgbox demandant confirmation, résultat dans OKForDel

If OKForDel Then
Attente.Show
DataEnvironment1.Archive_Etudes 'J'utilise le
dataenvironment, mais ADO c'est pareil
' J'ai donc deux recordsets ouvert, les archives et
l'original (fordelete) en mode Read/Write
With DataEnvironment1
.rsArchive_Etudes.AddNew
.rsForDelete.MoveFirst
.rsForDelete.Find (SearchStr)
Set RSFIELDS = .rsForDelete.Fields
For Each rsField In RSFIELDS
.rsArchive_Etudes(rsField.Name) = rsField.Value
Next rsField
.rsArchive_Etudes.Update
.rsForDelete.Delete
.rsForDelete.UpdateBatch
End With
DataEnvironment1.rsArchive_Etudes.Close
End If
DataEnvironment1.rsForDelete.Close
Set RSFIELDS = Nothing


"fabrizio-r" a écrit dans le message
de news:29f001c4285f$4e57af30$
J ai bien essayé avec le bookmark mais vb me génère
l'erreur suivante :

"Le moteur de la base de données Microsoft Jet ne
reconnait pas 'task_manager.*' en tant que nom de champ
ou expression correcte"

mon code est le suivant :

If btn.Key = "CLOSETASK" Then
Set monrs4 = New ADODB.Recordset

monrs4.Open "INSERT INTO taches_closes SELECT
task_manager.* FROM task_manager WHERE" &
Adodc1.Recordset.Bookmark, cnn1, adOpenKeyset,
adLockOptimistic

Adodc2.Refresh

monrs4.Open "SELECT * FROM taches_closes", cnn1,
adOpenKeyset, adLockOptimistic

Timer2.Enabled = True

End If

peut etre est ce un problème de synthaxe, en tout cas le
bookmark se positionne bien sur l'enregistrement que je
veu quand je me déplace dans ma table.

Fabrice.



-----Message d'origine-----
Hello Fabrice,

Ce que tu cherches c'est le Bookmark (c'est un long je


crois).
Recordset.bookmark rend une valeur unique qui correspond


à la ligne sur
laquelle on se trouve0.
Exemple
rs.find "Nom = 'fabrice'"
MyBM =rs.bookmark
rs.movefirst
Debug.print rs.fields("Nom")
---------> Clive
rs.bookmark=MyBM
Debug.print rs.fields("Nom")
---------> Fabrice

Notons que le Datagrid a lui une collection de


Bookmarks, ce qui permet de
marquer plusieurs lignes (pour effacement par exemple)
Grosso modo on fait
'Effacer les bookmarks
If (DataGrid1.SelBookmarks.Count <> 0) Then
DataGrid1.SelBookmarks.Remove 0
End If
'Ajouter un bookmark
DataGrid1.SelBookmarks.Add rs.Bookmark



"fabrizio-r" a


écrit dans le message
de news:2a3d01c42851$60fc5c70$
Hello a tous,

Quelqu'un peut il me dire comment je peut recuperer
l'état actif de mon recordset muni d'une table de
plusieurs champs, dans une variable???
De quel type doit etre cette variable???

Merci d 'avance,

Fabrice.


.



Avatar
fabrizio-r
je doi te paraitre chiant mai le pb c que mes données ne
sont pas dans un data grid, elles sont dans différents
textbox et datacombobox....

Fabrice.


-----Message d'origine-----
Voici comment je le fais (j'ai horreur du SQL donc je le


fait manuellement)
Dim rsField As adodb.Field
Dim OKForDel As Boolean
Dim RSFIELDS As adodb.Fields
Suite à un clique droite sur le sélecteur d'un datagrid,


je mets dans
SearchStr
SearchStr = "Ref_etude = " & "'" & grdDataGrid.Columns


(0).Text & "'"
Puis j'ouvre un msgbox demandant confirmation, résultat


dans OKForDel

If OKForDel Then
Attente.Show



DataEnvironment1.Archive_Etudes 'J'utilise le
dataenvironment, mais ADO c'est pareil
' J'ai donc deux recordsets ouvert,


les archives et
l'original (fordelete) en mode Read/Write
With DataEnvironment1
.rsArchive_Etudes.AddNew
.rsForDelete.MoveFirst
.rsForDelete.Find (SearchStr)
Set RSFIELDS


= .rsForDelete.Fields
For Each rsField In RSFIELDS
.rsArchive_Etudes


(rsField.Name) = rsField.Value
Next rsField
.rsArchive_Etudes.Update
.rsForDelete.Delete
.rsForDelete.UpdateBatch
End With



DataEnvironment1.rsArchive_Etudes.Close
End If
DataEnvironment1.rsForDelete.Close
Set RSFIELDS = Nothing


"fabrizio-r" a


écrit dans le message
de news:29f001c4285f$4e57af30$
J ai bien essayé avec le bookmark mais vb me génère
l'erreur suivante :

"Le moteur de la base de données Microsoft Jet ne
reconnait pas 'task_manager.*' en tant que nom de champ
ou expression correcte"

mon code est le suivant :

If btn.Key = "CLOSETASK" Then
Set monrs4 = New ADODB.Recordset

monrs4.Open "INSERT INTO taches_closes SELECT
task_manager.* FROM task_manager WHERE" &
Adodc1.Recordset.Bookmark, cnn1, adOpenKeyset,
adLockOptimistic

Adodc2.Refresh

monrs4.Open "SELECT * FROM taches_closes", cnn1,
adOpenKeyset, adLockOptimistic

Timer2.Enabled = True

End If

peut etre est ce un problème de synthaxe, en tout cas le
bookmark se positionne bien sur l'enregistrement que je
veu quand je me déplace dans ma table.

Fabrice.



-----Message d'origine-----
Hello Fabrice,

Ce que tu cherches c'est le Bookmark (c'est un long je


crois).
Recordset.bookmark rend une valeur unique qui correspond


à la ligne sur
laquelle on se trouve0.
Exemple
rs.find "Nom = 'fabrice'"
MyBM =rs.bookmark
rs.movefirst
Debug.print rs.fields("Nom")
---------> Clive
rs.bookmark=MyBM
Debug.print rs.fields("Nom")
---------> Fabrice

Notons que le Datagrid a lui une collection de


Bookmarks, ce qui permet de
marquer plusieurs lignes (pour effacement par exemple)
Grosso modo on fait
'Effacer les bookmarks
If (DataGrid1.SelBookmarks.Count <> 0) Then
DataGrid1.SelBookmarks.Remove 0
End If
'Ajouter un bookmark
DataGrid1.SelBookmarks.Add rs.Bookmark



"fabrizio-r" a


écrit dans le message
de news:2a3d01c42851$60fc5c70$
Hello a tous,

Quelqu'un peut il me dire comment je peut recuperer
l'état actif de mon recordset muni d'une table de
plusieurs champs, dans une variable???
De quel type doit etre cette variable???

Merci d 'avance,

Fabrice.


.





.



Avatar
Clive Lumb
>"fabrizio-r" a écrit dans le message


de news:2b5801c42865$f8eb61c0$
je doi te paraitre chiant mai le pb c que mes données ne


Euuh ... un peu

sont pas dans un data grid, elles sont dans différents
textbox et datacombobox....



Pas de problème. Il suffit d'être sûr d'être positionné sur la bonne ligne.
Donc tu cherches comment l'enregistrement à archiver ?


-----Message d'origine-----
Voici comment je le fais (j'ai horreur du SQL donc je le


fait manuellement)
Dim rsField As adodb.Field
Dim OKForDel As Boolean
Dim RSFIELDS As adodb.Fields
Suite à un clique droite sur le sélecteur d'un datagrid,


je mets dans
SearchStr
SearchStr = "Ref_etude = " & "'" & grdDataGrid.Columns


(0).Text & "'"
Puis j'ouvre un msgbox demandant confirmation, résultat


dans OKForDel

If OKForDel Then
Attente.Show



DataEnvironment1.Archive_Etudes 'J'utilise le
dataenvironment, mais ADO c'est pareil
' J'ai donc deux recordsets ouvert,


les archives et
l'original (fordelete) en mode Read/Write
With DataEnvironment1
.rsArchive_Etudes.AddNew
.rsForDelete.MoveFirst
.rsForDelete.Find (SearchStr)
Set RSFIELDS


= .rsForDelete.Fields
For Each rsField In RSFIELDS
.rsArchive_Etudes


(rsField.Name) = rsField.Value
Next rsField
.rsArchive_Etudes.Update
.rsForDelete.Delete
.rsForDelete.UpdateBatch
End With



DataEnvironment1.rsArchive_Etudes.Close
End If
DataEnvironment1.rsForDelete.Close
Set RSFIELDS = Nothing


"fabrizio-r" a


écrit dans le message
de news:29f001c4285f$4e57af30$
J ai bien essayé avec le bookmark mais vb me génère
l'erreur suivante :

"Le moteur de la base de données Microsoft Jet ne
reconnait pas 'task_manager.*' en tant que nom de champ
ou expression correcte"

mon code est le suivant :

If btn.Key = "CLOSETASK" Then
Set monrs4 = New ADODB.Recordset

monrs4.Open "INSERT INTO taches_closes SELECT
task_manager.* FROM task_manager WHERE" &
Adodc1.Recordset.Bookmark, cnn1, adOpenKeyset,
adLockOptimistic

Adodc2.Refresh

monrs4.Open "SELECT * FROM taches_closes", cnn1,
adOpenKeyset, adLockOptimistic

Timer2.Enabled = True

End If

peut etre est ce un problème de synthaxe, en tout cas le
bookmark se positionne bien sur l'enregistrement que je
veu quand je me déplace dans ma table.

Fabrice.



-----Message d'origine-----
Hello Fabrice,

Ce que tu cherches c'est le Bookmark (c'est un long je


crois).
Recordset.bookmark rend une valeur unique qui correspond


à la ligne sur
laquelle on se trouve0.
Exemple
rs.find "Nom = 'fabrice'"
MyBM =rs.bookmark
rs.movefirst
Debug.print rs.fields("Nom")
---------> Clive
rs.bookmark=MyBM
Debug.print rs.fields("Nom")
---------> Fabrice

Notons que le Datagrid a lui une collection de


Bookmarks, ce qui permet de
marquer plusieurs lignes (pour effacement par exemple)
Grosso modo on fait
'Effacer les bookmarks
If (DataGrid1.SelBookmarks.Count <> 0) Then
DataGrid1.SelBookmarks.Remove 0
End If
'Ajouter un bookmark
DataGrid1.SelBookmarks.Add rs.Bookmark



"fabrizio-r" a


écrit dans le message
de news:2a3d01c42851$60fc5c70$
Hello a tous,

Quelqu'un peut il me dire comment je peut recuperer
l'état actif de mon recordset muni d'une table de
plusieurs champs, dans une variable???
De quel type doit etre cette variable???

Merci d 'avance,

Fabrice.


.





.



Avatar
fabrizio-r
Oui voila, il faut que je sois sur d'etre positionné sur
la bonne ligne pour pouvoir effectivement, archiver cette
ligne dans une autre table, qui possède exactement les
mêmes champs que la table d'origine.

Fabrice.

-----Message d'origine-----

"fabrizio-r" a




écrit dans le message
de news:2b5801c42865$f8eb61c0$
je doi te paraitre chiant mai le pb c que mes données ne


Euuh ... un peu

sont pas dans un data grid, elles sont dans différents
textbox et datacombobox....



Pas de problème. Il suffit d'être sûr d'être positionné


sur la bonne ligne.
Donc tu cherches comment l'enregistrement à archiver ?


-----Message d'origine-----
Voici comment je le fais (j'ai horreur du SQL donc je le


fait manuellement)
Dim rsField As adodb.Field
Dim OKForDel As Boolean
Dim RSFIELDS As adodb.Fields
Suite à un clique droite sur le sélecteur d'un datagrid,


je mets dans
SearchStr
SearchStr = "Ref_etude = " & "'" & grdDataGrid.Columns


(0).Text & "'"
Puis j'ouvre un msgbox demandant confirmation, résultat


dans OKForDel

If OKForDel Then
Attente.Show



DataEnvironment1.Archive_Etudes 'J'utilise le
dataenvironment, mais ADO c'est pareil
' J'ai donc deux recordsets ouvert,


les archives et
l'original (fordelete) en mode Read/Write
With DataEnvironment1
.rsArchive_Etudes.AddNew
.rsForDelete.MoveFirst
.rsForDelete.Find (SearchStr)
Set RSFIELDS


= .rsForDelete.Fields
For Each rsField In RSFIELDS
.rsArchive_Etudes


(rsField.Name) = rsField.Value
Next rsField
.rsArchive_Etudes.Update
.rsForDelete.Delete
.rsForDelete.UpdateBatch
End With



DataEnvironment1.rsArchive_Etudes.Close
End If
DataEnvironment1.rsForDelete.Close
Set RSFIELDS = Nothing


"fabrizio-r" a


écrit dans le message
de news:29f001c4285f$4e57af30$
J ai bien essayé avec le bookmark mais vb me génère
l'erreur suivante :

"Le moteur de la base de données Microsoft Jet ne
reconnait pas 'task_manager.*' en tant que nom de champ
ou expression correcte"

mon code est le suivant :

If btn.Key = "CLOSETASK" Then
Set monrs4 = New ADODB.Recordset

monrs4.Open "INSERT INTO taches_closes SELECT
task_manager.* FROM task_manager WHERE" &
Adodc1.Recordset.Bookmark, cnn1, adOpenKeyset,
adLockOptimistic

Adodc2.Refresh

monrs4.Open "SELECT * FROM taches_closes", cnn1,
adOpenKeyset, adLockOptimistic

Timer2.Enabled = True

End If

peut etre est ce un problème de synthaxe, en tout cas le
bookmark se positionne bien sur l'enregistrement que je
veu quand je me déplace dans ma table.

Fabrice.



-----Message d'origine-----
Hello Fabrice,

Ce que tu cherches c'est le Bookmark (c'est un long je


crois).
Recordset.bookmark rend une valeur unique qui






correspond
à la ligne sur
laquelle on se trouve0.
Exemple
rs.find "Nom = 'fabrice'"
MyBM =rs.bookmark
rs.movefirst
Debug.print rs.fields("Nom")
---------> Clive
rs.bookmark=MyBM
Debug.print rs.fields("Nom")
---------> Fabrice

Notons que le Datagrid a lui une collection de


Bookmarks, ce qui permet de
marquer plusieurs lignes (pour effacement par exemple)
Grosso modo on fait
'Effacer les bookmarks
If (DataGrid1.SelBookmarks.Count <> 0) Then
DataGrid1.SelBookmarks.Remove 0
End If
'Ajouter un bookmark
DataGrid1.SelBookmarks.Add rs.Bookmark



"fabrizio-r" a


écrit dans le message
de news:2a3d01c42851$60fc5c70$
Hello a tous,

Quelqu'un peut il me dire comment je peut recuperer
l'état actif de mon recordset muni d'une table de
plusieurs champs, dans une variable???
De quel type doit etre cette variable???

Merci d 'avance,

Fabrice.


.





.





.



Avatar
Eric
re,
sur ton post initial (Question pour Clive ou autre) je t'ai proposé de
tester la valeur de la propriété AbsolutePosition de ton jeu
d'enregistrements. As tu essayé ?

A+
Eric

"fabrizio-r" écrivait
news:2a7001c42868$d7638570$:

Oui voila, il faut que je sois sur d'etre positionné sur
la bonne ligne pour pouvoir effectivement, archiver cette
ligne dans une autre table, qui possède exactement les
mêmes champs que la table d'origine.

Fabrice.

-----Message d'origine-----

"fabrizio-r" a écrit dans le
message de news:2b5801c42865$f8eb61c0$ je doi te
paraitre chiant mai le pb c que mes données ne


Euuh ... un peu

sont pas dans un data grid, elles sont dans différents textbox et
datacombobox....



Pas de problème. Il suffit d'être sûr d'être positionné sur la bonne
ligne. Donc tu cherches comment l'enregistrement à archiver ?


-----Message d'origine-----
Voici comment je le fais (j'ai horreur du SQL donc je le fait
manuellement) Dim rsField As adodb.Field
Dim OKForDel As Boolean
Dim RSFIELDS As adodb.Fields
Suite à un clique droite sur le sélecteur d'un datagrid, je mets dans
SearchStr
SearchStr = "Ref_etude = " & "'" & grdDataGrid.Columns (0).Text & "'"
Puis j'ouvre un msgbox demandant confirmation, résultat dans OKForDel

If OKForDel Then
Attente.Show



DataEnvironment1.Archive_Etudes 'J'utilise le
dataenvironment, mais ADO c'est pareil ' J'ai donc deux recordsets
ouvert, les archives et l'original (fordelete) en mode Read/Write
With DataEnvironment1 .rsArchive_Etudes.AddNew
.rsForDelete.MoveFirst
.rsForDelete.Find (SearchStr)
Set RSFIELDS = .rsForDelete.Fields
For Each rsField In RSFIELDS .rsArchive_Etudes
(rsField.Name) = rsField.Value
Next rsField .rsArchive_Etudes.Update
.rsForDelete.Delete .rsForDelete.UpdateBatch
End With



DataEnvironment1.rsArchive_Etudes.Close
End If
DataEnvironment1.rsForDelete.Close
Set RSFIELDS = Nothing


"fabrizio-r" a écrit dans le
message de news:29f001c4285f$4e57af30$
J ai bien essayé avec le bookmark mais vb me génère
l'erreur suivante :

"Le moteur de la base de données Microsoft Jet ne
reconnait pas 'task_manager.*' en tant que nom de champ
ou expression correcte"

mon code est le suivant :

If btn.Key = "CLOSETASK" Then
Set monrs4 = New ADODB.Recordset

monrs4.Open "INSERT INTO taches_closes SELECT
task_manager.* FROM task_manager WHERE" &
Adodc1.Recordset.Bookmark, cnn1, adOpenKeyset, adLockOptimistic

Adodc2.Refresh

monrs4.Open "SELECT * FROM taches_closes", cnn1, adOpenKeyset,
adLockOptimistic

Timer2.Enabled = True

End If

peut etre est ce un problème de synthaxe, en tout cas le
bookmark se positionne bien sur l'enregistrement que je
veu quand je me déplace dans ma table.

Fabrice.



-----Message d'origine-----
Hello Fabrice,

Ce que tu cherches c'est le Bookmark (c'est un long je crois).
Recordset.bookmark rend une valeur unique qui correspond à la ligne
sur laquelle on se trouve0.
Exemple
rs.find "Nom = 'fabrice'"
MyBM =rs.bookmark rs.movefirst
Debug.print rs.fields("Nom")
---------> Clive
rs.bookmark=MyBM
Debug.print rs.fields("Nom")
---------> Fabrice

Notons que le Datagrid a lui une collection de Bookmarks, ce qui
permet de marquer plusieurs lignes (pour effacement par exemple)
Grosso modo on fait
'Effacer les bookmarks
If (DataGrid1.SelBookmarks.Count <> 0) Then
DataGrid1.SelBookmarks.Remove 0
End If
'Ajouter un bookmark
DataGrid1.SelBookmarks.Add rs.Bookmark



"fabrizio-r" a écrit dans le
message de news:2a3d01c42851$60fc5c70$
Hello a tous,

Quelqu'un peut il me dire comment je peut recuperer
l'état actif de mon recordset muni d'une table de
plusieurs champs, dans une variable???
De quel type doit etre cette variable???

Merci d 'avance,

Fabrice.


.





.





.






Avatar
fabrizio-r
oui j ai essayé mais cela ne marche pas non plus, cela me
revoi toujour tous mes enregistrements et pas celui dont
je sui entrain de faire la lecture.

Fabrice.

-----Message d'origine-----
re,
sur ton post initial (Question pour Clive ou autre) je


t'ai proposé de
tester la valeur de la propriété AbsolutePosition de ton


jeu
d'enregistrements. As tu essayé ?

A+
Eric

"fabrizio-r"


écrivait
news:2a7001c42868$d7638570$:

Oui voila, il faut que je sois sur d'etre positionné




sur
la bonne ligne pour pouvoir effectivement, archiver




cette
ligne dans une autre table, qui possède exactement les
mêmes champs que la table d'origine.

Fabrice.

-----Message d'origine-----

"fabrizio-r" a








écrit dans le
message de news:2b5801c42865$f8eb61c0








$ je doi te
paraitre chiant mai le pb c que mes données ne


Euuh ... un peu

sont pas dans un data grid, elles sont dans








différents textbox et
datacombobox....



Pas de problème. Il suffit d'être sûr d'être






positionné sur la bonne
ligne. Donc tu cherches comment l'enregistrement à






archiver ?


-----Message d'origine-----
Voici comment je le fais (j'ai horreur du SQL donc je








le fait
manuellement) Dim rsField As adodb.Field
Dim OKForDel As Boolean
Dim RSFIELDS As adodb.Fields
Suite à un clique droite sur le sélecteur d'un








datagrid, je mets dans
SearchStr
SearchStr = "Ref_etude = " & "'" &








grdDataGrid.Columns (0).Text & "'"
Puis j'ouvre un msgbox demandant confirmation,








résultat dans OKForDel

If OKForDel Then
Attente.Show



DataEnvironment1.Archive_Etudes 'J'utilise le
dataenvironment, mais ADO c'est pareil ' J'ai donc








deux recordsets
ouvert, les archives et l'original (fordelete) en








mode Read/Write
With








DataEnvironment1 .rsArchive_Etudes.AddNew
.rsForDelete.MoveFirst
.rsForDelete.Find (SearchStr)
Set RSFIELDS








= .rsForDelete.Fields
For Each rsField In








RSFIELDS .rsArchive_Etudes
(rsField.Name) =








rsField.Value
Next








rsField .rsArchive_Etudes.Update
.rsForDelete.Delete .rsForDele








te.UpdateBatch
End With



DataEnvironment1.rsArchive_Etudes.Close
End If
DataEnvironment1.rsForDelete.Close
Set RSFIELDS = Nothing


"fabrizio-r" a








écrit dans le
message de news:29f001c4285f$4e57af30








$
J ai bien essayé avec le bookmark mais vb me génère
l'erreur suivante :

"Le moteur de la base de données Microsoft Jet ne
reconnait pas 'task_manager.*' en tant que nom de








champ
ou expression correcte"

mon code est le suivant :

If btn.Key = "CLOSETASK" Then
Set monrs4 = New ADODB.Recordset

monrs4.Open "INSERT INTO taches_closes SELECT
task_manager.* FROM task_manager WHERE" &
Adodc1.Recordset.Bookmark, cnn1, adOpenKeyset,








adLockOptimistic

Adodc2.Refresh

monrs4.Open "SELECT * FROM taches_closes", cnn1,








adOpenKeyset,
adLockOptimistic

Timer2.Enabled = True

End If

peut etre est ce un problème de synthaxe, en tout cas








le
bookmark se positionne bien sur l'enregistrement que








je
veu quand je me déplace dans ma table.

Fabrice.



-----Message d'origine-----
Hello Fabrice,

Ce que tu cherches c'est le Bookmark (c'est un long










je crois).
Recordset.bookmark rend une valeur unique qui










correspond à la ligne
sur laquelle on se trouve0.
Exemple
rs.find "Nom = 'fabrice'"
MyBM =rs.bookmark rs.movefirst
Debug.print rs.fields("Nom")
---------> Clive
rs.bookmark=MyBM
Debug.print rs.fields("Nom")
---------> Fabrice

Notons que le Datagrid a lui une collection de










Bookmarks, ce qui
permet de marquer plusieurs lignes (pour effacement










par exemple)
Grosso modo on fait
'Effacer les bookmarks
If (DataGrid1.SelBookmarks.Count <> 0) Then
DataGrid1.SelBookmarks.Remove 0
End If
'Ajouter un bookmark
DataGrid1.SelBookmarks.Add rs.Bookmark



"fabrizio-r" a










écrit dans le
message de news:2a3d01c42851$60fc5c70










$
Hello a tous,

Quelqu'un peut il me dire comment je peut recuperer
l'état actif de mon recordset muni d'une table de
plusieurs champs, dans une variable???
De quel type doit etre cette variable???

Merci d 'avance,

Fabrice.


.





.





.







.



Avatar
Clive Lumb
>"fabrizio-r" a écrit dans le message


de news:2a7001c42868$d7638570$
Oui voila, il faut que je sois sur d'etre positionné sur
la bonne ligne pour pouvoir effectivement, archiver cette
ligne dans une autre table, qui possède exactement les
mêmes champs que la table d'origine.



Alors... comment tu trouves tes records à archiver ?
On ne peut pas t'aider plus sans cela.

Clive
Avatar
fabrizio-r
je ne pense pas bien comprendre le sens de ta question
mais je v tenter de repondre.

comment je trouve mes enregistrements a archiver???
j accede a ma premiere base celle d origine par un
controle ADODC, j affiche les données des champs dans
différents textboxs.
ensuite j accede a ma seconde base d archivage par un
second controle ADODC, dont les donnees st tjr affiches a
l aide detextbox, mais affiché dans un deuxieme partie
d'un SSTab.

Ma partie de code qui est celle ci :

If btn.Key = "CLOSETASK" Then
Dim MyBM As Long
Set monrs4 = New ADODB.Recordset
monrs4.Open "INSERT INTO taches_closes SELECT
task_manager.* FROM task_manager", cnn1, adOpenKeyset,
adLockOptimistic
Adodc2.Refresh
monrs4.Open "SELECT * FROM taches_closes", cnn1,
adOpenKeyset, adLockOptimistic
Timer2.Enabled = True

End If


fonctionne bien dans le sens ou est affiché dans ma base
d'archivage tous les enregistrements de la base origine.
Moi je n'en veu qu'un seul, celui qui est lu par le
premier controle ADODC de ma base d'origine.

Fabrice.

-----Message d'origine-----

"fabrizio-r" a




écrit dans le message
de news:2a7001c42868$d7638570$
Oui voila, il faut que je sois sur d'etre positionné sur
la bonne ligne pour pouvoir effectivement, archiver




cette
ligne dans une autre table, qui possède exactement les
mêmes champs que la table d'origine.



Alors... comment tu trouves tes records à archiver ?
On ne peut pas t'aider plus sans cela.

Clive



.



1 2