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 peusont 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 ledataenvironment, 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.CloseEnd 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.
.
.
.
.
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" <anonymous@discussions.microsoft.com> écrivait
news:2a7001c42868$d7638570$a601280a@phx.gbl:
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" <anonymous@discussions.microsoft.com> a écrit dans le
message de news:2b5801c42865$f8eb61c0 $a101280a@phx.gbl... 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" <anonymous@discussions.microsoft.com> a écrit dans le
message de news:29f001c4285f$4e57af30 $a601280a@phx.gbl... 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" <anonymous@discussions.microsoft.com> a écrit dans le
message de news:2a3d01c42851$60fc5c70 $a501280a@phx.gbl... 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.
.
.
.
.
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 peusont 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 ledataenvironment, 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.CloseEnd 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.
.
.
.
.
-----Message d'origine-----
re,
Bizarre, car AbsolutePosition retourne la position de
mais il faut utiliser un curseur coté client :
La proc suivante m'affiche les rangs des enregistrements
Private Sub Form_Load()
Dim conn1 As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim sql As String
Dim AccessConnect As String
AccessConnect = "Provider=Microsoft.Jet.OLEDB.4.0;"
"Data
conn1.ConnectionString = AccessConnect
conn1.Open
rs.CursorLocation = adUseClient
sql = "select * from tclient"
rs.Open sql, conn1, adOpenForwardOnly,
Do While Not rs.EOF
List1.AddItem rs.AbsolutePosition & vbTab &
("Societe_client")
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
conn1.Close
Set conn1 = Nothing
End Sub
A+
Eric
"fabrizio-r"
news:2bd901c4286f$0cc0cf60$:oui j ai essayé mais cela ne marche pas non plus, cela
revoi toujour tous mes enregistrements et pas celui
je sui entrain de faire la lecture.
Fabrice.-----Message d'origine----- re, sur ton post initial
Clive ou autre) je t'ai proposé de tester la valeur
AbsolutePosition de ton jeu d'enregistrements. As tu
A+
Eric
"fabrizio-r"
news:2a7001c42868$d7638570$:Oui voila, il faut que je sois sur d'etre
ligne pour pouvoir effectivement, archiver cette
autre table, qui possède exactement les mêmes champs
d'origine.
Fabrice.-----Message d'origine-----"fabrizio-r"
message de news:2b5801c42865$f8eb61c0
paraitre chiant mai le pb c que mes données ne
Euuh ... un peusont pas dans un data grid, elles sont dans
datacombobox....
Pas de problème. Il suffit d'être sûr d'être
bonne ligne. Donc tu cherches comment
-----Message d'origine-----
Voici comment je le fais (j'ai horreur du SQL donc
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
dans SearchStr
SearchStr = "Ref_etude = " & "'" &
"'" Puis j'ouvre un msgbox demandant confirmation,
OKForDel
If OKForDel Then
Attente.Show
DataEnvironment1.Archive_Etudes 'J'utilise ledataenvironment, mais ADO c'est pareil ' J'ai donc
ouvert, les archives et l'original (fordelete) en
With
.rsForDelete.MoveFirst
.rsForDelete.Find
Set RSFIELDS
For Each rsField In
.rsArchive_Etudes
rsField.Value Next rsField
.rsArchive_Etudes.Update .rs
.rsForDele te.UpdateBatch
End With
DataEnvironment1.rsArchive_Etudes.CloseEnd If
DataEnvironment1.rsForDelete.Close
Set RSFIELDS = Nothing
"fabrizio-r"
message de news:29f001c4285f$4e57af30
essayé avec le bookmark mais vb me génère l'erreur
"Le moteur de la base de données Microsoft Jet ne
'task_manager.*' en tant que nom de champ ou
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,
Adodc2.Refresh
monrs4.Open "SELECT * FROM taches_closes", cnn1,
adLockOptimistic
Timer2.Enabled = True
End If
peut etre est ce un problème de synthaxe, en tout
se positionne bien sur l'enregistrement que je veu
déplace dans ma table.
Fabrice.-----Message d'origine-----
Hello Fabrice,
Ce que tu cherches c'est le Bookmark (c'est un
Recordset.bookmark rend une valeur unique qui
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
permet de marquer plusieurs lignes (pour
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"
message de news:2a3d01c42851$60fc5c70
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.
.
.
.
.
.
-----Message d'origine-----
re,
Bizarre, car AbsolutePosition retourne la position de
mais il faut utiliser un curseur coté client :
La proc suivante m'affiche les rangs des enregistrements
Private Sub Form_Load()
Dim conn1 As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim sql As String
Dim AccessConnect As String
AccessConnect = "Provider=Microsoft.Jet.OLEDB.4.0;"
"Data
conn1.ConnectionString = AccessConnect
conn1.Open
rs.CursorLocation = adUseClient
sql = "select * from tclient"
rs.Open sql, conn1, adOpenForwardOnly,
Do While Not rs.EOF
List1.AddItem rs.AbsolutePosition & vbTab &
("Societe_client")
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
conn1.Close
Set conn1 = Nothing
End Sub
A+
Eric
"fabrizio-r" <anonymous@discussions.microsoft.com>
news:2bd901c4286f$0cc0cf60$a101280a@phx.gbl:
oui j ai essayé mais cela ne marche pas non plus, cela
revoi toujour tous mes enregistrements et pas celui
je sui entrain de faire la lecture.
Fabrice.
-----Message d'origine----- re, sur ton post initial
Clive ou autre) je t'ai proposé de tester la valeur
AbsolutePosition de ton jeu d'enregistrements. As tu
A+
Eric
"fabrizio-r" <anonymous@discussions.microsoft.com>
news:2a7001c42868$d7638570$a601280a@phx.gbl:
Oui voila, il faut que je sois sur d'etre
ligne pour pouvoir effectivement, archiver cette
autre table, qui possède exactement les mêmes champs
d'origine.
Fabrice.
-----Message d'origine-----
"fabrizio-r" <anonymous@discussions.microsoft.com>
message de news:2b5801c42865$f8eb61c0
paraitre chiant mai le pb c que mes données ne
Euuh ... un peu
sont pas dans un data grid, elles sont dans
datacombobox....
Pas de problème. Il suffit d'être sûr d'être
bonne ligne. Donc tu cherches comment
-----Message d'origine-----
Voici comment je le fais (j'ai horreur du SQL donc
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
dans SearchStr
SearchStr = "Ref_etude = " & "'" &
"'" Puis j'ouvre un msgbox demandant confirmation,
OKForDel
If OKForDel Then
Attente.Show
DataEnvironment1.Archive_Etudes 'J'utilise le
dataenvironment, mais ADO c'est pareil ' J'ai donc
ouvert, les archives et l'original (fordelete) en
With
.rsForDelete.MoveFirst
.rsForDelete.Find
Set RSFIELDS
For Each rsField In
.rsArchive_Etudes
rsField.Value Next rsField
.rsArchive_Etudes.Update .rs
.rsForDele te.UpdateBatch
End With
DataEnvironment1.rsArchive_Etudes.Close
End If
DataEnvironment1.rsForDelete.Close
Set RSFIELDS = Nothing
"fabrizio-r" <anonymous@discussions.microsoft.com>
message de news:29f001c4285f$4e57af30
essayé avec le bookmark mais vb me génère l'erreur
"Le moteur de la base de données Microsoft Jet ne
'task_manager.*' en tant que nom de champ ou
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,
Adodc2.Refresh
monrs4.Open "SELECT * FROM taches_closes", cnn1,
adLockOptimistic
Timer2.Enabled = True
End If
peut etre est ce un problème de synthaxe, en tout
se positionne bien sur l'enregistrement que je veu
déplace dans ma table.
Fabrice.
-----Message d'origine-----
Hello Fabrice,
Ce que tu cherches c'est le Bookmark (c'est un
Recordset.bookmark rend une valeur unique qui
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
permet de marquer plusieurs lignes (pour
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" <anonymous@discussions.microsoft.com>
message de news:2a3d01c42851$60fc5c70
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.
.
.
.
.
.
-----Message d'origine-----
re,
Bizarre, car AbsolutePosition retourne la position de
mais il faut utiliser un curseur coté client :
La proc suivante m'affiche les rangs des enregistrements
Private Sub Form_Load()
Dim conn1 As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim sql As String
Dim AccessConnect As String
AccessConnect = "Provider=Microsoft.Jet.OLEDB.4.0;"
"Data
conn1.ConnectionString = AccessConnect
conn1.Open
rs.CursorLocation = adUseClient
sql = "select * from tclient"
rs.Open sql, conn1, adOpenForwardOnly,
Do While Not rs.EOF
List1.AddItem rs.AbsolutePosition & vbTab &
("Societe_client")
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
conn1.Close
Set conn1 = Nothing
End Sub
A+
Eric
"fabrizio-r"
news:2bd901c4286f$0cc0cf60$:oui j ai essayé mais cela ne marche pas non plus, cela
revoi toujour tous mes enregistrements et pas celui
je sui entrain de faire la lecture.
Fabrice.-----Message d'origine----- re, sur ton post initial
Clive ou autre) je t'ai proposé de tester la valeur
AbsolutePosition de ton jeu d'enregistrements. As tu
A+
Eric
"fabrizio-r"
news:2a7001c42868$d7638570$:Oui voila, il faut que je sois sur d'etre
ligne pour pouvoir effectivement, archiver cette
autre table, qui possède exactement les mêmes champs
d'origine.
Fabrice.-----Message d'origine-----"fabrizio-r"
message de news:2b5801c42865$f8eb61c0
paraitre chiant mai le pb c que mes données ne
Euuh ... un peusont pas dans un data grid, elles sont dans
datacombobox....
Pas de problème. Il suffit d'être sûr d'être
bonne ligne. Donc tu cherches comment
-----Message d'origine-----
Voici comment je le fais (j'ai horreur du SQL donc
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
dans SearchStr
SearchStr = "Ref_etude = " & "'" &
"'" Puis j'ouvre un msgbox demandant confirmation,
OKForDel
If OKForDel Then
Attente.Show
DataEnvironment1.Archive_Etudes 'J'utilise ledataenvironment, mais ADO c'est pareil ' J'ai donc
ouvert, les archives et l'original (fordelete) en
With
.rsForDelete.MoveFirst
.rsForDelete.Find
Set RSFIELDS
For Each rsField In
.rsArchive_Etudes
rsField.Value Next rsField
.rsArchive_Etudes.Update .rs
.rsForDele te.UpdateBatch
End With
DataEnvironment1.rsArchive_Etudes.CloseEnd If
DataEnvironment1.rsForDelete.Close
Set RSFIELDS = Nothing
"fabrizio-r"
message de news:29f001c4285f$4e57af30
essayé avec le bookmark mais vb me génère l'erreur
"Le moteur de la base de données Microsoft Jet ne
'task_manager.*' en tant que nom de champ ou
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,
Adodc2.Refresh
monrs4.Open "SELECT * FROM taches_closes", cnn1,
adLockOptimistic
Timer2.Enabled = True
End If
peut etre est ce un problème de synthaxe, en tout
se positionne bien sur l'enregistrement que je veu
déplace dans ma table.
Fabrice.-----Message d'origine-----
Hello Fabrice,
Ce que tu cherches c'est le Bookmark (c'est un
Recordset.bookmark rend une valeur unique qui
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
permet de marquer plusieurs lignes (pour
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"
message de news:2a3d01c42851$60fc5c70
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.
.
.
.
.
.
Oui, moi aussi ton bout de code, m affiche le rang de mes
enregistrement , cependant je ne vois pas comment l
utiliser pour ce que je souhaite.
Fabrice.-----Message d'origine-----
re,
Bizarre, car AbsolutePosition retourne la position de
l'enregistrement lumais il faut utiliser un curseur coté client :
La proc suivante m'affiche les rangs des enregistrements
du recordset.
Private Sub Form_Load()
Dim conn1 As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim sql As String
Dim AccessConnect As String
AccessConnect = "Provider=Microsoft.Jet.OLEDB.4.0;"
& _"Data
Source=E:ZZZManipulationADOPlumier2003.mdb"
conn1.ConnectionString = AccessConnect
conn1.Open
rs.CursorLocation = adUseClient
sql = "select * from tclient"
rs.Open sql, conn1, adOpenForwardOnly,
adLockReadOnly, adCmdTextDo While Not rs.EOF
List1.AddItem rs.AbsolutePosition & vbTab &
rs.Fields("Societe_client")
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
conn1.Close
Set conn1 = Nothing
End Sub
A+
Eric
"fabrizio-r"
écrivaitnews:2bd901c4286f$0cc0cf60$:oui j ai essayé mais cela ne marche pas non plus, cela
merevoi toujour tous mes enregistrements et pas celui
dontje sui entrain de faire la lecture.
Fabrice.-----Message d'origine----- re, sur ton post initial
(Question pourClive 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"
écrivaitnews:2a7001c42868$d7638570$:Oui voila, il faut que je sois sur d'etre
positionné sur la bonneligne pour pouvoir effectivement, archiver cette
ligne dans uneautre table, qui possède exactement les mêmes champs
que la tabled'origine.
Fabrice.-----Message d'origine-----"fabrizio-r"
a écrit dans lemessage de news:2b5801c42865$f8eb61c0
$ je doi teparaitre chiant mai le pb c que mes données ne
Euuh ... un peusont pas dans un data grid, elles sont dans
différents textbox etdatacombobox....
Pas de problème. Il suffit d'être sûr d'être
positionné sur labonne ligne. Donc tu cherches comment
l'enregistrement à archiver ?-----Message d'origine-----
Voici comment je le fais (j'ai horreur du SQL donc
je le faitmanuellement) 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 metsdans SearchStr
SearchStr = "Ref_etude = " & "'" &
grdDataGrid.Columns (0).Text &"'" Puis j'ouvre un msgbox demandant confirmation,
résultat dansOKForDel
If OKForDel Then
Attente.Show
DataEnvironment1.Archive_Etudes 'J'utilise ledataenvironment, mais ADO c'est pareil ' J'ai donc
deux recordsetsouvert, les archives et l'original (fordelete) en
mode Read/WriteWith
DataEnvironment1 .rsArchive_Etudes.AddNew.rsForDelete.MoveFirst
.rsForDelete.Find
(SearchStr)Set RSFIELDS
= .rsForDelete.FieldsFor Each rsField In
RSFIELDS.rsArchive_Etudes
(rsField.Name) =rsField.Value Next rsField
.rsArchive_Etudes.Update .rs
ForDelete.Delete.rsForDele te.UpdateBatch
End With
DataEnvironment1.rsArchive_Etudes.CloseEnd If
DataEnvironment1.rsForDelete.Close
Set RSFIELDS = Nothing
"fabrizio-r"
a écrit dans lemessage de news:29f001c4285f$4e57af30
$ J ai bienessayé 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 bookmarkse positionne bien sur l'enregistrement que je veu
quand je medé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 à laligne 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 quipermet 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 lemessage de news:2a3d01c42851$60fc5c70
$ Hello atous,
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.
.
.
.
.
.
Oui, moi aussi ton bout de code, m affiche le rang de mes
enregistrement , cependant je ne vois pas comment l
utiliser pour ce que je souhaite.
Fabrice.
-----Message d'origine-----
re,
Bizarre, car AbsolutePosition retourne la position de
l'enregistrement lu
mais il faut utiliser un curseur coté client :
La proc suivante m'affiche les rangs des enregistrements
du recordset.
Private Sub Form_Load()
Dim conn1 As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim sql As String
Dim AccessConnect As String
AccessConnect = "Provider=Microsoft.Jet.OLEDB.4.0;"
& _
"Data
Source=E:ZZZManipulationADOPlumier2003.mdb"
conn1.ConnectionString = AccessConnect
conn1.Open
rs.CursorLocation = adUseClient
sql = "select * from tclient"
rs.Open sql, conn1, adOpenForwardOnly,
adLockReadOnly, adCmdText
Do While Not rs.EOF
List1.AddItem rs.AbsolutePosition & vbTab &
rs.Fields
("Societe_client")
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
conn1.Close
Set conn1 = Nothing
End Sub
A+
Eric
"fabrizio-r" <anonymous@discussions.microsoft.com>
écrivait
news:2bd901c4286f$0cc0cf60$a101280a@phx.gbl:
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" <anonymous@discussions.microsoft.com>
écrivait
news:2a7001c42868$d7638570$a601280a@phx.gbl:
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" <anonymous@discussions.microsoft.com>
a écrit dans le
message de news:2b5801c42865$f8eb61c0
$a101280a@phx.gbl... 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 .rs
ForDelete.Delete
.rsForDele te.UpdateBatch
End With
DataEnvironment1.rsArchive_Etudes.Close
End If
DataEnvironment1.rsForDelete.Close
Set RSFIELDS = Nothing
"fabrizio-r" <anonymous@discussions.microsoft.com>
a écrit dans le
message de news:29f001c4285f$4e57af30
$a601280a@phx.gbl... 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" <anonymous@discussions.microsoft.com>
a écrit dans le
message de news:2a3d01c42851$60fc5c70
$a501280a@phx.gbl... 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.
.
.
.
.
.
Oui, moi aussi ton bout de code, m affiche le rang de mes
enregistrement , cependant je ne vois pas comment l
utiliser pour ce que je souhaite.
Fabrice.-----Message d'origine-----
re,
Bizarre, car AbsolutePosition retourne la position de
l'enregistrement lumais il faut utiliser un curseur coté client :
La proc suivante m'affiche les rangs des enregistrements
du recordset.
Private Sub Form_Load()
Dim conn1 As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim sql As String
Dim AccessConnect As String
AccessConnect = "Provider=Microsoft.Jet.OLEDB.4.0;"
& _"Data
Source=E:ZZZManipulationADOPlumier2003.mdb"
conn1.ConnectionString = AccessConnect
conn1.Open
rs.CursorLocation = adUseClient
sql = "select * from tclient"
rs.Open sql, conn1, adOpenForwardOnly,
adLockReadOnly, adCmdTextDo While Not rs.EOF
List1.AddItem rs.AbsolutePosition & vbTab &
rs.Fields("Societe_client")
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
conn1.Close
Set conn1 = Nothing
End Sub
A+
Eric
"fabrizio-r"
écrivaitnews:2bd901c4286f$0cc0cf60$:oui j ai essayé mais cela ne marche pas non plus, cela
merevoi toujour tous mes enregistrements et pas celui
dontje sui entrain de faire la lecture.
Fabrice.-----Message d'origine----- re, sur ton post initial
(Question pourClive 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"
écrivaitnews:2a7001c42868$d7638570$:Oui voila, il faut que je sois sur d'etre
positionné sur la bonneligne pour pouvoir effectivement, archiver cette
ligne dans uneautre table, qui possède exactement les mêmes champs
que la tabled'origine.
Fabrice.-----Message d'origine-----"fabrizio-r"
a écrit dans lemessage de news:2b5801c42865$f8eb61c0
$ je doi teparaitre chiant mai le pb c que mes données ne
Euuh ... un peusont pas dans un data grid, elles sont dans
différents textbox etdatacombobox....
Pas de problème. Il suffit d'être sûr d'être
positionné sur labonne ligne. Donc tu cherches comment
l'enregistrement à archiver ?-----Message d'origine-----
Voici comment je le fais (j'ai horreur du SQL donc
je le faitmanuellement) 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 metsdans SearchStr
SearchStr = "Ref_etude = " & "'" &
grdDataGrid.Columns (0).Text &"'" Puis j'ouvre un msgbox demandant confirmation,
résultat dansOKForDel
If OKForDel Then
Attente.Show
DataEnvironment1.Archive_Etudes 'J'utilise ledataenvironment, mais ADO c'est pareil ' J'ai donc
deux recordsetsouvert, les archives et l'original (fordelete) en
mode Read/WriteWith
DataEnvironment1 .rsArchive_Etudes.AddNew.rsForDelete.MoveFirst
.rsForDelete.Find
(SearchStr)Set RSFIELDS
= .rsForDelete.FieldsFor Each rsField In
RSFIELDS.rsArchive_Etudes
(rsField.Name) =rsField.Value Next rsField
.rsArchive_Etudes.Update .rs
ForDelete.Delete.rsForDele te.UpdateBatch
End With
DataEnvironment1.rsArchive_Etudes.CloseEnd If
DataEnvironment1.rsForDelete.Close
Set RSFIELDS = Nothing
"fabrizio-r"
a écrit dans lemessage de news:29f001c4285f$4e57af30
$ J ai bienessayé 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 bookmarkse positionne bien sur l'enregistrement que je veu
quand je medé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 à laligne 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 quipermet 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 lemessage de news:2a3d01c42851$60fc5c70
$ Hello atous,
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.
.
.
.
.
.
-----Message d'origine-----
Si tu mets ca dans un controle Adodc, en cliquant sur
tu récuperes la position de l'enregistrement via
Adodc1.Recordset.AbsolutePosition et donc tu peux mettre
l'insertion une clause where
"Insert Into Tache_close Select * from Task_manager
Rang & ";" où Rang a reçu la valeur de
et apres tu fais un execute le sql
Eric
"fabrizio-r"
news:2d6801c4287c$86ef9340$:Oui, moi aussi ton bout de code, m affiche le rang de
enregistrement , cependant je ne vois pas comment l
utiliser pour ce que je souhaite.
Fabrice.-----Message d'origine-----
re,
Bizarre, car AbsolutePosition retourne la position de
l'enregistrement lumais il faut utiliser un curseur coté client :
La proc suivante m'affiche les rangs des
du recordset.
Private Sub Form_Load()
Dim conn1 As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim sql As String
Dim AccessConnect As String
AccessConnect
& _"Data
Source=E:ZZZManipulationADOPlumier2003.mdb"
conn1.ConnectionString = AccessConnect
conn1.Open
rs.CursorLocation = adUseClient
sql = "select * from tclient"
rs.Open sql, conn1, adOpenForwardOnly,
adLockReadOnly, adCmdTextDo While Not rs.EOF
List1.AddItem rs.AbsolutePosition & vbTab &
rs.Fields("Societe_client")
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
conn1.Close
Set conn1 = Nothing
End Sub
A+
Eric
"fabrizio-r"
écrivaitnews:2bd901c4286f$0cc0cf60$:oui j ai essayé mais cela ne marche pas non plus,
merevoi toujour tous mes enregistrements et pas celui
dontje sui entrain de faire la lecture.
Fabrice.-----Message d'origine----- re, sur ton post
(Question pourClive ou autre) je t'ai proposé de tester la
de la propriétéAbsolutePosition de ton jeu d'enregistrements. As
essayé ?
A+
Eric
"fabrizio-r"
écrivaitnews:2a7001c42868$d7638570$:Oui voila, il faut que je sois sur d'etre
positionné sur la bonneligne pour pouvoir effectivement, archiver cette
ligne dans uneautre table, qui possède exactement les mêmes
que la tabled'origine.
Fabrice.-----Message d'origine-----"fabrizio-r"
a écrit dans lemessage de news:2b5801c42865$f8eb61c0
$ je doi teparaitre chiant mai le pb c que mes données ne
Euuh ... un peusont pas dans un data grid, elles sont dans
différents textbox etdatacombobox....
Pas de problème. Il suffit d'être sûr d'être
positionné sur labonne ligne. Donc tu cherches comment
l'enregistrement à archiver ?-----Message d'origine-----
Voici comment je le fais (j'ai horreur du SQL
je le faitmanuellement) 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 metsdans SearchStr
SearchStr = "Ref_etude = " & "'" &
grdDataGrid.Columns (0).Text &"'" Puis j'ouvre un msgbox demandant
résultat dansOKForDel
If OKForDel Then
Attente.Show
DataEnvironment1.Archive_Etudes 'J'utilise ledataenvironment, mais ADO c'est pareil ' J'ai
deux recordsetsouvert, les archives et l'original (fordelete)
mode Read/WriteWith
DataEnvironment1 .rsArchive_Etudes.AddNew.rsForDelete.MoveFirst
.rsForDelete.Find
(SearchStr)Set RSFIELDS
= .rsForDelete.FieldsFor Each rsField In
RSFIELDS.rsArchive_Etudes
(rsField.Name) =rsField.Value Next
.rsArchive_Etudes.Update .
ForDelete.Delete.rsForDele te.UpdateBatch
End With
DataEnvironment1.rsArchive_Etudes.CloseEnd If
DataEnvironment1.rsForDelete.Close
Set RSFIELDS = Nothing
"fabrizio-r"
a écrit dans lemessage de news:29f001c4285f$4e57af30
$ J ai bienessayé avec le bookmark mais vb me génère
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 bookmarkse positionne bien sur l'enregistrement que je
quand je medé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 à laligne 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 quipermet de marquer plusieurs lignes (pour
effacement par exemple)Grosso modo on fait
'Effacer les bookmarks
If (DataGrid1.SelBookmarks.Count <> 0)
DataGrid1.SelBookmarks.Remove 0
End If
'Ajouter un bookmark
DataGrid1.SelBookmarks.Add rs.Bookmark
"fabrizio-r"
a écrit dans lemessage de news:2a3d01c42851$60fc5c70
$ Hello atous,
Quelqu'un peut il me dire comment je peut
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.
.
.
.
.
.
.
-----Message d'origine-----
Si tu mets ca dans un controle Adodc, en cliquant sur
tu récuperes la position de l'enregistrement via
Adodc1.Recordset.AbsolutePosition et donc tu peux mettre
l'insertion une clause where
"Insert Into Tache_close Select * from Task_manager
Rang & ";" où Rang a reçu la valeur de
et apres tu fais un execute le sql
Eric
"fabrizio-r" <anonymous@discussions.microsoft.com>
news:2d6801c4287c$86ef9340$a301280a@phx.gbl:
Oui, moi aussi ton bout de code, m affiche le rang de
enregistrement , cependant je ne vois pas comment l
utiliser pour ce que je souhaite.
Fabrice.
-----Message d'origine-----
re,
Bizarre, car AbsolutePosition retourne la position de
l'enregistrement lu
mais il faut utiliser un curseur coté client :
La proc suivante m'affiche les rangs des
du recordset.
Private Sub Form_Load()
Dim conn1 As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim sql As String
Dim AccessConnect As String
AccessConnect
& _
"Data
Source=E:ZZZManipulationADOPlumier2003.mdb"
conn1.ConnectionString = AccessConnect
conn1.Open
rs.CursorLocation = adUseClient
sql = "select * from tclient"
rs.Open sql, conn1, adOpenForwardOnly,
adLockReadOnly, adCmdText
Do While Not rs.EOF
List1.AddItem rs.AbsolutePosition & vbTab &
rs.Fields
("Societe_client")
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
conn1.Close
Set conn1 = Nothing
End Sub
A+
Eric
"fabrizio-r" <anonymous@discussions.microsoft.com>
écrivait
news:2bd901c4286f$0cc0cf60$a101280a@phx.gbl:
oui j ai essayé mais cela ne marche pas non plus,
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
(Question pour
Clive ou autre) je t'ai proposé de tester la
de la propriété
AbsolutePosition de ton jeu d'enregistrements. As
essayé ?
A+
Eric
"fabrizio-r" <anonymous@discussions.microsoft.com>
écrivait
news:2a7001c42868$d7638570$a601280a@phx.gbl:
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
que la table
d'origine.
Fabrice.
-----Message d'origine-----
"fabrizio-r"
a écrit dans le
message de news:2b5801c42865$f8eb61c0
$a101280a@phx.gbl... 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
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
résultat dans
OKForDel
If OKForDel Then
Attente.Show
DataEnvironment1.Archive_Etudes 'J'utilise le
dataenvironment, mais ADO c'est pareil ' J'ai
deux recordsets
ouvert, les archives et l'original (fordelete)
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
.rsArchive_Etudes.Update .
ForDelete.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
$a601280a@phx.gbl... J ai bien
essayé avec le bookmark mais vb me génère
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
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)
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
$a501280a@phx.gbl... Hello a
tous,
Quelqu'un peut il me dire comment je peut
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.
.
.
.
.
.
.
-----Message d'origine-----
Si tu mets ca dans un controle Adodc, en cliquant sur
tu récuperes la position de l'enregistrement via
Adodc1.Recordset.AbsolutePosition et donc tu peux mettre
l'insertion une clause where
"Insert Into Tache_close Select * from Task_manager
Rang & ";" où Rang a reçu la valeur de
et apres tu fais un execute le sql
Eric
"fabrizio-r"
news:2d6801c4287c$86ef9340$:Oui, moi aussi ton bout de code, m affiche le rang de
enregistrement , cependant je ne vois pas comment l
utiliser pour ce que je souhaite.
Fabrice.-----Message d'origine-----
re,
Bizarre, car AbsolutePosition retourne la position de
l'enregistrement lumais il faut utiliser un curseur coté client :
La proc suivante m'affiche les rangs des
du recordset.
Private Sub Form_Load()
Dim conn1 As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim sql As String
Dim AccessConnect As String
AccessConnect
& _"Data
Source=E:ZZZManipulationADOPlumier2003.mdb"
conn1.ConnectionString = AccessConnect
conn1.Open
rs.CursorLocation = adUseClient
sql = "select * from tclient"
rs.Open sql, conn1, adOpenForwardOnly,
adLockReadOnly, adCmdTextDo While Not rs.EOF
List1.AddItem rs.AbsolutePosition & vbTab &
rs.Fields("Societe_client")
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
conn1.Close
Set conn1 = Nothing
End Sub
A+
Eric
"fabrizio-r"
écrivaitnews:2bd901c4286f$0cc0cf60$:oui j ai essayé mais cela ne marche pas non plus,
merevoi toujour tous mes enregistrements et pas celui
dontje sui entrain de faire la lecture.
Fabrice.-----Message d'origine----- re, sur ton post
(Question pourClive ou autre) je t'ai proposé de tester la
de la propriétéAbsolutePosition de ton jeu d'enregistrements. As
essayé ?
A+
Eric
"fabrizio-r"
écrivaitnews:2a7001c42868$d7638570$:Oui voila, il faut que je sois sur d'etre
positionné sur la bonneligne pour pouvoir effectivement, archiver cette
ligne dans uneautre table, qui possède exactement les mêmes
que la tabled'origine.
Fabrice.-----Message d'origine-----"fabrizio-r"
a écrit dans lemessage de news:2b5801c42865$f8eb61c0
$ je doi teparaitre chiant mai le pb c que mes données ne
Euuh ... un peusont pas dans un data grid, elles sont dans
différents textbox etdatacombobox....
Pas de problème. Il suffit d'être sûr d'être
positionné sur labonne ligne. Donc tu cherches comment
l'enregistrement à archiver ?-----Message d'origine-----
Voici comment je le fais (j'ai horreur du SQL
je le faitmanuellement) 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 metsdans SearchStr
SearchStr = "Ref_etude = " & "'" &
grdDataGrid.Columns (0).Text &"'" Puis j'ouvre un msgbox demandant
résultat dansOKForDel
If OKForDel Then
Attente.Show
DataEnvironment1.Archive_Etudes 'J'utilise ledataenvironment, mais ADO c'est pareil ' J'ai
deux recordsetsouvert, les archives et l'original (fordelete)
mode Read/WriteWith
DataEnvironment1 .rsArchive_Etudes.AddNew.rsForDelete.MoveFirst
.rsForDelete.Find
(SearchStr)Set RSFIELDS
= .rsForDelete.FieldsFor Each rsField In
RSFIELDS.rsArchive_Etudes
(rsField.Name) =rsField.Value Next
.rsArchive_Etudes.Update .
ForDelete.Delete.rsForDele te.UpdateBatch
End With
DataEnvironment1.rsArchive_Etudes.CloseEnd If
DataEnvironment1.rsForDelete.Close
Set RSFIELDS = Nothing
"fabrizio-r"
a écrit dans lemessage de news:29f001c4285f$4e57af30
$ J ai bienessayé avec le bookmark mais vb me génère
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 bookmarkse positionne bien sur l'enregistrement que je
quand je medé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 à laligne 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 quipermet de marquer plusieurs lignes (pour
effacement par exemple)Grosso modo on fait
'Effacer les bookmarks
If (DataGrid1.SelBookmarks.Count <> 0)
DataGrid1.SelBookmarks.Remove 0
End If
'Ajouter un bookmark
DataGrid1.SelBookmarks.Add rs.Bookmark
"fabrizio-r"
a écrit dans lemessage de news:2a3d01c42851$60fc5c70
$ Hello atous,
Quelqu'un peut il me dire comment je peut
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.
.
.
.
.
.
.
-----Message d'origine-----
On ve reprendre tout à zéro.
Si j'ai bien compris, tu as un enregistrement affiché à
le transférer dans une table d'archivage ?
Cet enregistrement est dans Table1 (disons) et tu veux
Table2 puis l'effacer de la Table1.
Il y a deux façons de faire (parmi tant d'autres).
Soit on utilise le Recordset qui est ouvert à l'écran
est donc forcement positionné sur l'enregistrement que
Dans ce cas on utilise du code basé sur l'exemple que
Ouvrir un recordset dans la table destination (rs2
rs2.addnew
Copier les infos champ par champ de rs1 vers rs2
For each rsField in rs1.Fields
rs2.fields(rsField.Name).Value = rsField.Value
Next rsField
rs2.Update
Effacer la ligne dans Table1
rs1.Delete
rs1.UpdateBatch
Fermer rs2 etc....
Soit on utilise du SQL. Dans ce cas on recupère l'index
enregistrement à l'écran (ID_Tache par exemple)
IDpourEffacement = rs1.fields(ID_Tache).Value
Puis on copie l'enregistrement avec une commande SQL.
SQLcmd= "SELECT Table1.* INTO Table2 FROM Table1
& IDpourEffacement
rs3.Open SQLcmd
rs3.close
Notons que si ID_Tache est une chaine il faut mettre
d'autre. Si c'est numérique il faut mettre
Ensuite on efface l'enregistrement
SQLcmd= "DELETE * FROM Table1 WHERE
......
Voilà, j'espère avoir clarifié
.
-----Message d'origine-----
On ve reprendre tout à zéro.
Si j'ai bien compris, tu as un enregistrement affiché à
le transférer dans une table d'archivage ?
Cet enregistrement est dans Table1 (disons) et tu veux
Table2 puis l'effacer de la Table1.
Il y a deux façons de faire (parmi tant d'autres).
Soit on utilise le Recordset qui est ouvert à l'écran
est donc forcement positionné sur l'enregistrement que
Dans ce cas on utilise du code basé sur l'exemple que
Ouvrir un recordset dans la table destination (rs2
rs2.addnew
Copier les infos champ par champ de rs1 vers rs2
For each rsField in rs1.Fields
rs2.fields(rsField.Name).Value = rsField.Value
Next rsField
rs2.Update
Effacer la ligne dans Table1
rs1.Delete
rs1.UpdateBatch
Fermer rs2 etc....
Soit on utilise du SQL. Dans ce cas on recupère l'index
enregistrement à l'écran (ID_Tache par exemple)
IDpourEffacement = rs1.fields(ID_Tache).Value
Puis on copie l'enregistrement avec une commande SQL.
SQLcmd= "SELECT Table1.* INTO Table2 FROM Table1
& IDpourEffacement
rs3.Open SQLcmd
rs3.close
Notons que si ID_Tache est une chaine il faut mettre
d'autre. Si c'est numérique il faut mettre
Ensuite on efface l'enregistrement
SQLcmd= "DELETE * FROM Table1 WHERE
......
Voilà, j'espère avoir clarifié
.
-----Message d'origine-----
On ve reprendre tout à zéro.
Si j'ai bien compris, tu as un enregistrement affiché à
le transférer dans une table d'archivage ?
Cet enregistrement est dans Table1 (disons) et tu veux
Table2 puis l'effacer de la Table1.
Il y a deux façons de faire (parmi tant d'autres).
Soit on utilise le Recordset qui est ouvert à l'écran
est donc forcement positionné sur l'enregistrement que
Dans ce cas on utilise du code basé sur l'exemple que
Ouvrir un recordset dans la table destination (rs2
rs2.addnew
Copier les infos champ par champ de rs1 vers rs2
For each rsField in rs1.Fields
rs2.fields(rsField.Name).Value = rsField.Value
Next rsField
rs2.Update
Effacer la ligne dans Table1
rs1.Delete
rs1.UpdateBatch
Fermer rs2 etc....
Soit on utilise du SQL. Dans ce cas on recupère l'index
enregistrement à l'écran (ID_Tache par exemple)
IDpourEffacement = rs1.fields(ID_Tache).Value
Puis on copie l'enregistrement avec une commande SQL.
SQLcmd= "SELECT Table1.* INTO Table2 FROM Table1
& IDpourEffacement
rs3.Open SQLcmd
rs3.close
Notons que si ID_Tache est une chaine il faut mettre
d'autre. Si c'est numérique il faut mettre
Ensuite on efface l'enregistrement
SQLcmd= "DELETE * FROM Table1 WHERE
......
Voilà, j'espère avoir clarifié
.
-----Message d'origine-----
je v essayer ca, je te dirai quoi demain car la je dois
partir.
je te remercie pour ton aide.
bonne soirée,
Fabrice.-----Message d'origine-----
Si tu mets ca dans un controle Adodc, en cliquant sur
une ligne du controletu récuperes la position de l'enregistrement via
l'instructionAdodc1.Recordset.AbsolutePosition et donc tu peux
dans ton sql pourl'insertion une clause where
"Insert Into Tache_close Select * from Task_manager
where Id_Tache =" &Rang & ";" où Rang a reçu la valeur de
Adodc1.Recordset.AbsolutePosition
et apres tu fais un execute le sql
Eric
"fabrizio-r"
écrivaitnews:2d6801c4287c$86ef9340$:Oui, moi aussi ton bout de code, m affiche le rang de
mesenregistrement , cependant je ne vois pas comment l
utiliser pour ce que je souhaite.
Fabrice.-----Message d'origine-----
re,
Bizarre, car AbsolutePosition retourne la position de
l'enregistrement lumais il faut utiliser un curseur coté client :
La proc suivante m'affiche les rangs des
enregistrementsdu recordset.
Private Sub Form_Load()
Dim conn1 As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim sql As String
Dim AccessConnect As String
AccessConnect
= "Provider=Microsoft.Jet.OLEDB.4.0;"& _"Data
Source=E:ZZZManipulationADOPlumier2003.mdb"
conn1.ConnectionString = AccessConnect
conn1.Open
rs.CursorLocation = adUseClient
sql = "select * from tclient"
rs.Open sql, conn1, adOpenForwardOnly,
adLockReadOnly, adCmdTextDo While Not rs.EOF
List1.AddItem rs.AbsolutePosition & vbTab &
rs.Fields("Societe_client")
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
conn1.Close
Set conn1 = Nothing
End Sub
A+
Eric
"fabrizio-r"
écrivaitnews:2bd901c4286f$0cc0cf60$:oui j ai essayé mais cela ne marche pas non plus,
celamerevoi toujour tous mes enregistrements et pas celui
dontje sui entrain de faire la lecture.
Fabrice.-----Message d'origine----- re, sur ton post
initial(Question pourClive ou autre) je t'ai proposé de tester la
valeurde la propriétéAbsolutePosition de ton jeu d'enregistrements. As
tuessayé ?
A+
Eric
"fabrizio-r"
écrivaitnews:2a7001c42868$d7638570$:Oui voila, il faut que je sois sur d'etre
positionné sur la bonneligne pour pouvoir effectivement, archiver cette
ligne dans uneautre table, qui possède exactement les mêmes
champsque la tabled'origine.
Fabrice.-----Message d'origine-----"fabrizio-r"a écrit dans lemessage de news:2b5801c42865$f8eb61c0
$ je doi teparaitre chiant mai le pb c que mes données ne
Euuh ... un peusont pas dans un data grid, elles sont dans
différents textbox etdatacombobox....
Pas de problème. Il suffit d'être sûr d'être
positionné sur labonne ligne. Donc tu cherches comment
l'enregistrement à archiver ?-----Message d'origine-----
Voici comment je le fais (j'ai horreur du SQL
doncje le faitmanuellement) 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 metsdans SearchStr
SearchStr = "Ref_etude = " & "'" &
grdDataGrid.Columns (0).Text &"'" Puis j'ouvre un msgbox demandant
confirmation,résultat dansOKForDel
If OKForDel Then
Attente.Show
DataEnvironment1.Archive_Etudes 'J'utilise ledataenvironment, mais ADO c'est pareil ' J'ai
doncdeux recordsetsouvert, les archives et l'original (fordelete)
enmode Read/WriteWith
DataEnvironment1 .rsArchive_Etudes.AddNew.rsForDelete.MoveFirst
.rsForDelete.Find
(SearchStr)Set RSFIELDS
= .rsForDelete.FieldsFor Each rsField In
RSFIELDS.rsArchive_Etudes
(rsField.Name) =rsField.Value Next
rsField.rsArchive_Etudes.Update
rsForDelete.Delete.rsForDele
End With
DataEnvironment1.rsArchive_Etudes.CloseEnd If
Set RSFIELDS = Nothing
"fabrizio-r"a écrit dans lemessage de news:29f001c4285f$4e57af30
$ J ai bienessayé avec le bookmark mais vb me génère
l'erreursuivante :
"Le moteur de la base de données Microsoft Jet
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",
adOpenKeyset,adLockOptimistic
Timer2.Enabled = True
End If
peut etre est ce un problème de synthaxe, en
cas le bookmarkse positionne bien sur l'enregistrement que je
veuquand je medé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 à laligne 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 quipermet de marquer plusieurs lignes (pour
effacement par exemple)Grosso modo on fait
'Effacer les bookmarks
If (DataGrid1.SelBookmarks.Count <> 0)
ThenDataGrid1.SelBookmarks.Remove 0
End If
'Ajouter un bookmark
DataGrid1.SelBookmarks.Add rs.Bookmark
"fabrizio-r"a écrit dans lemessage de news:2a3d01c42851$60fc5c70
$ Hello atous,
Quelqu'un peut il me dire comment je peut
recupererl'état actif de mon recordset muni d'une table
plusieurs champs, dans une variable???
De quel type doit etre cette variable???
Merci d 'avance,
Fabrice.
.
.
.
.
.
.
.
-----Message d'origine-----
je v essayer ca, je te dirai quoi demain car la je dois
partir.
je te remercie pour ton aide.
bonne soirée,
Fabrice.
-----Message d'origine-----
Si tu mets ca dans un controle Adodc, en cliquant sur
une ligne du controle
tu récuperes la position de l'enregistrement via
l'instruction
Adodc1.Recordset.AbsolutePosition et donc tu peux
dans ton sql pour
l'insertion une clause where
"Insert Into Tache_close Select * from Task_manager
where Id_Tache =" &
Rang & ";" où Rang a reçu la valeur de
Adodc1.Recordset.AbsolutePosition
et apres tu fais un execute le sql
Eric
"fabrizio-r" <anonymous@discussions.microsoft.com>
écrivait
news:2d6801c4287c$86ef9340$a301280a@phx.gbl:
Oui, moi aussi ton bout de code, m affiche le rang de
mes
enregistrement , cependant je ne vois pas comment l
utiliser pour ce que je souhaite.
Fabrice.
-----Message d'origine-----
re,
Bizarre, car AbsolutePosition retourne la position de
l'enregistrement lu
mais il faut utiliser un curseur coté client :
La proc suivante m'affiche les rangs des
enregistrements
du recordset.
Private Sub Form_Load()
Dim conn1 As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim sql As String
Dim AccessConnect As String
AccessConnect
= "Provider=Microsoft.Jet.OLEDB.4.0;"
& _
"Data
Source=E:ZZZManipulationADOPlumier2003.mdb"
conn1.ConnectionString = AccessConnect
conn1.Open
rs.CursorLocation = adUseClient
sql = "select * from tclient"
rs.Open sql, conn1, adOpenForwardOnly,
adLockReadOnly, adCmdText
Do While Not rs.EOF
List1.AddItem rs.AbsolutePosition & vbTab &
rs.Fields
("Societe_client")
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
conn1.Close
Set conn1 = Nothing
End Sub
A+
Eric
"fabrizio-r" <anonymous@discussions.microsoft.com>
écrivait
news:2bd901c4286f$0cc0cf60$a101280a@phx.gbl:
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" <anonymous@discussions.microsoft.com>
écrivait
news:2a7001c42868$d7638570$a601280a@phx.gbl:
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"
<anonymous@discussions.microsoft.com>
a écrit dans le
message de news:2b5801c42865$f8eb61c0
$a101280a@phx.gbl... 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
rs
ForDelete.Delete
.rsForDele
End With
DataEnvironment1.rsArchive_Etudes.Close
End If
Set RSFIELDS = Nothing
"fabrizio-r"
<anonymous@discussions.microsoft.com>
a écrit dans le
message de news:29f001c4285f$4e57af30
$a601280a@phx.gbl... 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
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",
adOpenKeyset,
adLockOptimistic
Timer2.Enabled = True
End If
peut etre est ce un problème de synthaxe, en
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"
<anonymous@discussions.microsoft.com>
a écrit dans le
message de news:2a3d01c42851$60fc5c70
$a501280a@phx.gbl... Hello a
tous,
Quelqu'un peut il me dire comment je peut
recuperer
l'état actif de mon recordset muni d'une table
plusieurs champs, dans une variable???
De quel type doit etre cette variable???
Merci d 'avance,
Fabrice.
.
.
.
.
.
.
.
-----Message d'origine-----
je v essayer ca, je te dirai quoi demain car la je dois
partir.
je te remercie pour ton aide.
bonne soirée,
Fabrice.-----Message d'origine-----
Si tu mets ca dans un controle Adodc, en cliquant sur
une ligne du controletu récuperes la position de l'enregistrement via
l'instructionAdodc1.Recordset.AbsolutePosition et donc tu peux
dans ton sql pourl'insertion une clause where
"Insert Into Tache_close Select * from Task_manager
where Id_Tache =" &Rang & ";" où Rang a reçu la valeur de
Adodc1.Recordset.AbsolutePosition
et apres tu fais un execute le sql
Eric
"fabrizio-r"
écrivaitnews:2d6801c4287c$86ef9340$:Oui, moi aussi ton bout de code, m affiche le rang de
mesenregistrement , cependant je ne vois pas comment l
utiliser pour ce que je souhaite.
Fabrice.-----Message d'origine-----
re,
Bizarre, car AbsolutePosition retourne la position de
l'enregistrement lumais il faut utiliser un curseur coté client :
La proc suivante m'affiche les rangs des
enregistrementsdu recordset.
Private Sub Form_Load()
Dim conn1 As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim sql As String
Dim AccessConnect As String
AccessConnect
= "Provider=Microsoft.Jet.OLEDB.4.0;"& _"Data
Source=E:ZZZManipulationADOPlumier2003.mdb"
conn1.ConnectionString = AccessConnect
conn1.Open
rs.CursorLocation = adUseClient
sql = "select * from tclient"
rs.Open sql, conn1, adOpenForwardOnly,
adLockReadOnly, adCmdTextDo While Not rs.EOF
List1.AddItem rs.AbsolutePosition & vbTab &
rs.Fields("Societe_client")
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
conn1.Close
Set conn1 = Nothing
End Sub
A+
Eric
"fabrizio-r"
écrivaitnews:2bd901c4286f$0cc0cf60$:oui j ai essayé mais cela ne marche pas non plus,
celamerevoi toujour tous mes enregistrements et pas celui
dontje sui entrain de faire la lecture.
Fabrice.-----Message d'origine----- re, sur ton post
initial(Question pourClive ou autre) je t'ai proposé de tester la
valeurde la propriétéAbsolutePosition de ton jeu d'enregistrements. As
tuessayé ?
A+
Eric
"fabrizio-r"
écrivaitnews:2a7001c42868$d7638570$:Oui voila, il faut que je sois sur d'etre
positionné sur la bonneligne pour pouvoir effectivement, archiver cette
ligne dans uneautre table, qui possède exactement les mêmes
champsque la tabled'origine.
Fabrice.-----Message d'origine-----"fabrizio-r"a écrit dans lemessage de news:2b5801c42865$f8eb61c0
$ je doi teparaitre chiant mai le pb c que mes données ne
Euuh ... un peusont pas dans un data grid, elles sont dans
différents textbox etdatacombobox....
Pas de problème. Il suffit d'être sûr d'être
positionné sur labonne ligne. Donc tu cherches comment
l'enregistrement à archiver ?-----Message d'origine-----
Voici comment je le fais (j'ai horreur du SQL
doncje le faitmanuellement) 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 metsdans SearchStr
SearchStr = "Ref_etude = " & "'" &
grdDataGrid.Columns (0).Text &"'" Puis j'ouvre un msgbox demandant
confirmation,résultat dansOKForDel
If OKForDel Then
Attente.Show
DataEnvironment1.Archive_Etudes 'J'utilise ledataenvironment, mais ADO c'est pareil ' J'ai
doncdeux recordsetsouvert, les archives et l'original (fordelete)
enmode Read/WriteWith
DataEnvironment1 .rsArchive_Etudes.AddNew.rsForDelete.MoveFirst
.rsForDelete.Find
(SearchStr)Set RSFIELDS
= .rsForDelete.FieldsFor Each rsField In
RSFIELDS.rsArchive_Etudes
(rsField.Name) =rsField.Value Next
rsField.rsArchive_Etudes.Update
rsForDelete.Delete.rsForDele
End With
DataEnvironment1.rsArchive_Etudes.CloseEnd If
Set RSFIELDS = Nothing
"fabrizio-r"a écrit dans lemessage de news:29f001c4285f$4e57af30
$ J ai bienessayé avec le bookmark mais vb me génère
l'erreursuivante :
"Le moteur de la base de données Microsoft Jet
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",
adOpenKeyset,adLockOptimistic
Timer2.Enabled = True
End If
peut etre est ce un problème de synthaxe, en
cas le bookmarkse positionne bien sur l'enregistrement que je
veuquand je medé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 à laligne 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 quipermet de marquer plusieurs lignes (pour
effacement par exemple)Grosso modo on fait
'Effacer les bookmarks
If (DataGrid1.SelBookmarks.Count <> 0)
ThenDataGrid1.SelBookmarks.Remove 0
End If
'Ajouter un bookmark
DataGrid1.SelBookmarks.Add rs.Bookmark
"fabrizio-r"a écrit dans lemessage de news:2a3d01c42851$60fc5c70
$ Hello atous,
Quelqu'un peut il me dire comment je peut
recupererl'état actif de mon recordset muni d'une table
plusieurs champs, dans une variable???
De quel type doit etre cette variable???
Merci d 'avance,
Fabrice.
.
.
.
.
.
.
.
-----Message d'origine-----
On ve reprendre tout à zéro.
Si j'ai bien compris, tu as un enregistrement affiché à
le transférer dans une table d'archivage ?
Cet enregistrement est dans Table1 (disons) et tu veux
Table2 puis l'effacer de la Table1.
Il y a deux façons de faire (parmi tant d'autres).
Soit on utilise le Recordset qui est ouvert à l'écran
est donc forcement positionné sur l'enregistrement que
Dans ce cas on utilise du code basé sur l'exemple que
Ouvrir un recordset dans la table destination (rs2
rs2.addnew
Copier les infos champ par champ de rs1 vers rs2
For each rsField in rs1.Fields
rs2.fields(rsField.Name).Value = rsField.Value
Next rsField
rs2.Update
Effacer la ligne dans Table1
rs1.Delete
rs1.UpdateBatch
Fermer rs2 etc....
Soit on utilise du SQL. Dans ce cas on recupère l'index
enregistrement à l'écran (ID_Tache par exemple)
IDpourEffacement = rs1.fields(ID_Tache).Value
Puis on copie l'enregistrement avec une commande SQL.
SQLcmd= "SELECT Table1.* INTO Table2 FROM Table1
& IDpourEffacement
rs3.Open SQLcmd
rs3.close
Notons que si ID_Tache est une chaine il faut mettre
d'autre. Si c'est numérique il faut mettre
Ensuite on efface l'enregistrement
SQLcmd= "DELETE * FROM Table1 WHERE
......
Voilà, j'espère avoir clarifié
.
-----Message d'origine-----
On ve reprendre tout à zéro.
Si j'ai bien compris, tu as un enregistrement affiché à
le transférer dans une table d'archivage ?
Cet enregistrement est dans Table1 (disons) et tu veux
Table2 puis l'effacer de la Table1.
Il y a deux façons de faire (parmi tant d'autres).
Soit on utilise le Recordset qui est ouvert à l'écran
est donc forcement positionné sur l'enregistrement que
Dans ce cas on utilise du code basé sur l'exemple que
Ouvrir un recordset dans la table destination (rs2
rs2.addnew
Copier les infos champ par champ de rs1 vers rs2
For each rsField in rs1.Fields
rs2.fields(rsField.Name).Value = rsField.Value
Next rsField
rs2.Update
Effacer la ligne dans Table1
rs1.Delete
rs1.UpdateBatch
Fermer rs2 etc....
Soit on utilise du SQL. Dans ce cas on recupère l'index
enregistrement à l'écran (ID_Tache par exemple)
IDpourEffacement = rs1.fields(ID_Tache).Value
Puis on copie l'enregistrement avec une commande SQL.
SQLcmd= "SELECT Table1.* INTO Table2 FROM Table1
& IDpourEffacement
rs3.Open SQLcmd
rs3.close
Notons que si ID_Tache est une chaine il faut mettre
d'autre. Si c'est numérique il faut mettre
Ensuite on efface l'enregistrement
SQLcmd= "DELETE * FROM Table1 WHERE
......
Voilà, j'espère avoir clarifié
.
-----Message d'origine-----
On ve reprendre tout à zéro.
Si j'ai bien compris, tu as un enregistrement affiché à
le transférer dans une table d'archivage ?
Cet enregistrement est dans Table1 (disons) et tu veux
Table2 puis l'effacer de la Table1.
Il y a deux façons de faire (parmi tant d'autres).
Soit on utilise le Recordset qui est ouvert à l'écran
est donc forcement positionné sur l'enregistrement que
Dans ce cas on utilise du code basé sur l'exemple que
Ouvrir un recordset dans la table destination (rs2
rs2.addnew
Copier les infos champ par champ de rs1 vers rs2
For each rsField in rs1.Fields
rs2.fields(rsField.Name).Value = rsField.Value
Next rsField
rs2.Update
Effacer la ligne dans Table1
rs1.Delete
rs1.UpdateBatch
Fermer rs2 etc....
Soit on utilise du SQL. Dans ce cas on recupère l'index
enregistrement à l'écran (ID_Tache par exemple)
IDpourEffacement = rs1.fields(ID_Tache).Value
Puis on copie l'enregistrement avec une commande SQL.
SQLcmd= "SELECT Table1.* INTO Table2 FROM Table1
& IDpourEffacement
rs3.Open SQLcmd
rs3.close
Notons que si ID_Tache est une chaine il faut mettre
d'autre. Si c'est numérique il faut mettre
Ensuite on efface l'enregistrement
SQLcmd= "DELETE * FROM Table1 WHERE
......
Voilà, j'espère avoir clarifié
.