Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Insert dans ACCESS trop lent! URGENT!!! [ Archives Visual Basic / J'AI BESOIN D'AIDE !!!! :) ] (slayeraix)

vendredi 18 octobre 2002 à 11:08:22 | Insert dans ACCESS trop lent! URGENT!!!

slayeraix

J ai un problème,

j ai une procédure (remplir_liste) qui doit me remplir une table (TEMPORAIRE dans ma base ACCESS) en faisant un INSERT avec des requetes imbirqués.

J ai une autre procédure (transac_ click) qui elle, doit tout d abord appelé la précédente procédure (remplir_liste) et doit m afficher ensuite à l aide d un recordset (rs8) les champs que j ai rempli dans la table (TEMPORAIRE dans ma base ACCESS).

Mais à chaque fois ça me fait une erreur car il veut m afficher le contenu de ma table alors qu il n y a rien dans celle ci du fait que l INSERT sous ACCESS met un certain temps, trop long.

Quelqu un serait t il comment faire dans ma procédure (transac_click) pour dire que tant que ma procédure (remplir_liste) n est pas finie ou plutot tant que mon INSERT sous ACCESS n est pas fini (c plutot ca le probleme) il doit attendre pour executer mon recordset (rs8) afin d afficher le contenu de la table (TEMPORAIRE sous ACCESS), et à quel niveau le mettre dans mon code de la procédure transac_click??????????????

Ou une autre solution serait de mettre un timer mais vu que l INSERT varie en temps selon le traitement qu il effectue le timer risque d etre trop court ou trop long selon le traitement, et en plus je ne sais pas comment le faire (je débute en VB)

Je met mon code pour que ce soit plus compréhensible :



Public Sub remplir_liste()
Dim requete, requete1, requete_insertion As String
Dim liste As Variant
Dim MaBase As Database
Dim rs As Recordset



'Ouverture et definition de la base.
Set MaBase = DBEngine.Workspaces(0).OpenDatabase(nom_base)


MaBase.Execute "DELETE * FROM TEMPORAIRE"

requete = "SELECT NEXT_PROG_NAME FROM NEXT WHERE PROG_NAME='" & progname.Text & "'"

Set rs = MaBase.OpenRecordset(requete)

If Not rs.EOF Then
MaBase.Execute "INSERT INTO TEMPORAIRE SELECT PROG_NAME, NEXT_PROG_NAME FROM NEXT WHERE PROG_NAME='" & progname.Text & "'"
requete1 = "SELECT NEXT_PROG_NAME FROM NEXT WHERE PROG_NAME IN (" & requete & ")"

Set rs = MaBase.OpenRecordset(requete)

Do Until rs.EOF
requete_insertion = "INSERT INTO TEMPORAIRE SELECT PROG_NAME, NEXT_PROG_NAME FROM NEXT WHERE PROG_NAME IN (" & requete & ") AND PROG_NAME NOT IN (SELECT PROG_NAME FROM TEMPORAIRE)"

MaBase.Execute requete_insertion

requete = "SELECT NEXT_PROG_NAME FROM NEXT WHERE PROG_NAME IN (" & requete & ")"

requete1 = "SELECT NEXT_PROG_NAME FROM NEXT WHERE PROG_NAME IN (" & requete & ") AND PROG_NAME NOT IN (SELECT PROG_NAME FROM TEMPORAIRE)"

Set rs = MaBase.OpenRecordset(requete1)

Loop

End If

End Sub

__________________________________________


Private Sub transacname_click()

Dim rs1 As Recordset, rs2 As Recordset, rs3 As Recordset, rs4 As Recordset, rs5 As Recordset, rs6 As Recordset, rs7 As Recordset 'recordset servant a recuperer les informations de la bdd.
Dim MaBase As Database 'variable de type base de donnees.
Dim s1 As String, s2 As String, s3 As String, s4 As String, s5 As String, s6 As String, s7 As String 'variables de mise en forme des requetes.
Dim sNomTransaction As String, sNomProgram As String 'variable de recuperation de la valeur de transacname.
Dim i As Integer
Dim b2 As Boolean
Dim nom As String
Dim Proglist_txt As String
Dim rs8 As Recordset
Dim s8 As String



libdescrip.Text = ""
libcusto = 0

'Recuperation du nom de la transaction.
sNomTransaction = transacname.Text

'Recuperation du nom du programme.
sNomProgram = progname.Text

'Connection a la base.
Set MaBase = DBEngine.Workspaces(0).OpenDatabase(nom_base)

'Preparation de la requete qui sert a remplir la ListBox TransacDescrip.
s1 = "SELECT TRANSACTION.TRANSAC_DESCRIP FROM TRANSACTION WHERE TRANSAC_NAME='" & sNomTransaction & "'"

'Preparation de la requete qui sert a remplir la ListBox ScreenName.
s2 = "SELECT SCREENS.LIB_NAME FROM SCREENS WHERE SCREENS.TRANSAC_NAME='" & sNomTransaction & "'"

'Preparation de la requete qui sert a remplir la ListBox ModuleName.
s3 = "SELECT TO_BE_PART.MODULE_NAME FROM TO_BE_PART WHERE TO_BE_PART.TRANSAC_NAME='" & sNomTransaction & "'"

'Preparation de la requete qui sert a remplir la ListBox ProgName.
s4 = "SELECT TRANSACTION.PROG_NAME FROM TRANSACTION WHERE TRANSACTION.TRANSAC_NAME='" & sNomTransaction & "'"

'Preparation de la requete qui sert a remplir la ListBox ProgType.
s5 = "SELECT PROGRAM.PROG_TYPE FROM PROGRAM WHERE PROGRAM.PROG_NAME='" & sNomProgram & "'"

'Preparation de la requete qui sert a remplir le TextBox ProgDescrip.
s6 = "SELECT PROGRAM.PROG_DESCRIP FROM PROGRAM WHERE PROGRAM.PROG_NAME='" & sNomProgram & "'"

'Preparation de la requete qui sert a remplir le CheckBox ProgCusto.
s7 = "SELECT PROGRAM.PROG_CUSTO FROM PROGRAM WHERE PROGRAM.PROG_NAME='" & sNomProgram & "'"

s8 = "SELECT TEMPORAIRE.PROG_NAME, TEMPORAIRE.NEXT_PROG_NAME FROM TEMPORAIRE"

'Ouverture et definition des recordsets.
Set rs1 = MaBase.OpenRecordset(s1)
Set rs2 = MaBase.OpenRecordset(s2)
Set rs3 = MaBase.OpenRecordset(s3)
Set rs4 = MaBase.OpenRecordset(s4)
Set rs5 = MaBase.OpenRecordset(s5)
Set rs6 = MaBase.OpenRecordset(s6)
Set rs7 = MaBase.OpenRecordset(s7)
Set rs8 = MaBase.OpenRecordset(s8)

'Vidage des listboxs.
transaccorresp.Clear
transacdescrip.Clear
screenname.Clear
modulename.Clear
progtype.Clear
progcusto = 0
moduledescrip.Clear
libname.Clear
libtype.Clear
proglist.Clear


'Remplissage des listboxs.
While Not rs1.EOF
transacdescrip.AddItem rs1.Fields("TRANSAC_DESCRIP").Value
rs1.MoveNext
Wend

While Not rs2.EOF
screenname.AddItem rs2.Fields("LIB_NAME").Value
rs2.MoveNext
Wend

While Not rs3.EOF
modulename.AddItem rs3.Fields("MODULE_NAME").Value
rs3.MoveNext
Wend


'Remplissage du TextBox progname
Set rs4 = MaBase.OpenRecordset(s4)
If rs4.RecordCount <> 0 Then
progname.Text = NullToVide(rs4.Fields("PROG_NAME").Value)
progname.Refresh
Else
progname.Text = ""
progname.Refresh
End If


While Not rs5.EOF
'nom = progname.Container

'nom.AddItem rs5.Fields("PROG_TYPE").Value
rs5.MoveNext
Wend



'Appel de la procédure remplir_liste permettant de remplir la table TEMPORAIRE sous ACCESS

remplir_liste



'Remplissage du TextBox progdescrip
If rs6.RecordCount <> 0 Then
progdescrip.Text = NullToVide(rs6.Fields("PROG_DESCRIP").Value)
progdescrip.Refresh
Else
progdescrip.Text = ""
progdescrip.Refresh
End If


'Remplissage du CheckBox progcusto
With rs7
If .RecordCount > 0 Then
For i = 1 To .RecordCount
b2 = NullToVide(.Fields("PROG_CUSTO").Value)
If b2 = True Then
progcusto = 1
Else
progcusto = 0
End If

.MoveNext
Next i
End If
End With

'-------------------------------------------------------------------------------
'Permet de remplir le listbox proglist en 2 colonnes avec les 2 champs de la table TEMPORAIRE
While Not rs8.EOF
Proglist_txt = rs8.Fields("PROG_NAME").Value & " | " & rs8.Fields("NEXT_PROG_NAME").Value
proglist.AddItem Proglist_txt
rs8.MoveNext
Wend
'-----------------------------------------------------------


'Fermeture des recordsets.
rs1.Close
rs2.Close
rs3.Close
rs4.Close
rs5.Close
rs6.Close
rs7.Close
rs8.Close

'Liberation des recordsets.
Set rs1 = Nothing
Set rs2 = Nothing
Set rs3 = Nothing
Set rs4 = Nothing
Set rs5 = Nothing
Set rs6 = Nothing
Set rs7 = Nothing
Set rs8 = Nothing

'Liberation de la base de donnees.
Set MaBase = Nothing


End Sub


Quelqu un pourrait t il donc me dire comment faire et où le mettre dans mon code de la procédure transac_click?


merci d avance!!

Laurent

vendredi 18 octobre 2002 à 11:55:40 | Re : Insert dans ACCESS trop lent! URGENT!!!

6Po

Heu perso je pense que tu devrais utiliser la memoire de l'ordi ou peutre etre des onglets et faire l'enregistrement que à la fin... c plus facile.

Pour le temps, j'ai pas le ton soruce l'es trop long mais tu peux essayer de mettre un DoEvent avant de demander la lecture de ta table temporaire.

Sinon essai avec un timer. Que tu start des que tu as engeristre ton temporaire avec un delais de dison 100 ou 200 millisec... ca devrait pouvoir tourné.

6Po
http://www.dreamersteam.org



-------------------------------
Réponse au message :
-------------------------------

J ai un problème,

j ai une procédure (remplir_liste) qui doit me remplir une table (TEMPORAIRE dans ma base ACCESS) en faisant un INSERT avec des requetes imbirqués.

J ai une autre procédure (transac_ click) qui elle, doit tout d abord appelé la précédente procédure (remplir_liste) et doit m afficher ensuite à l aide d un recordset (rs8) les champs que j ai rempli dans la table (TEMPORAIRE dans ma base ACCESS).

Mais à chaque fois ça me fait une erreur car il veut m afficher le contenu de ma table alors qu il n y a rien dans celle ci du fait que l INSERT sous ACCESS met un certain temps, trop long.

Quelqu un serait t il comment faire dans ma procédure (transac_click) pour dire que tant que ma procédure (remplir_liste) n est pas finie ou plutot tant que mon INSERT sous ACCESS n est pas fini (c plutot ca le probleme) il doit attendre pour executer mon recordset (rs8) afin d afficher le contenu de la table (TEMPORAIRE sous ACCESS), et à quel niveau le mettre dans mon code de la procédure transac_click??????????????

Ou une autre solution serait de mettre un timer mais vu que l INSERT varie en temps selon le traitement qu il effectue le timer risque d etre trop court ou trop long selon le traitement, et en plus je ne sais pas comment le faire (je débute en VB)

Je met mon code pour que ce soit plus compréhensible :



Public Sub remplir_liste()
Dim requete, requete1, requete_insertion As String
Dim liste As Variant
Dim MaBase As Database
Dim rs As Recordset



'Ouverture et definition de la base.
Set MaBase = DBEngine.Workspaces(0).OpenDatabase(nom_base)


MaBase.Execute "DELETE * FROM TEMPORAIRE"

requete = "SELECT NEXT_PROG_NAME FROM NEXT WHERE PROG_NAME='" & progname.Text & "'"

Set rs = MaBase.OpenRecordset(requete)

If Not rs.EOF Then
MaBase.Execute "INSERT INTO TEMPORAIRE SELECT PROG_NAME, NEXT_PROG_NAME FROM NEXT WHERE PROG_NAME='" & progname.Text & "'"
requete1 = "SELECT NEXT_PROG_NAME FROM NEXT WHERE PROG_NAME IN (" & requete & ")"

Set rs = MaBase.OpenRecordset(requete)

Do Until rs.EOF
requete_insertion = "INSERT INTO TEMPORAIRE SELECT PROG_NAME, NEXT_PROG_NAME FROM NEXT WHERE PROG_NAME IN (" & requete & ") AND PROG_NAME NOT IN (SELECT PROG_NAME FROM TEMPORAIRE)"

MaBase.Execute requete_insertion

requete = "SELECT NEXT_PROG_NAME FROM NEXT WHERE PROG_NAME IN (" & requete & ")"

requete1 = "SELECT NEXT_PROG_NAME FROM NEXT WHERE PROG_NAME IN (" & requete & ") AND PROG_NAME NOT IN (SELECT PROG_NAME FROM TEMPORAIRE)"

Set rs = MaBase.OpenRecordset(requete1)

Loop

End If

End Sub

__________________________________________


Private Sub transacname_click()

Dim rs1 As Recordset, rs2 As Recordset, rs3 As Recordset, rs4 As Recordset, rs5 As Recordset, rs6 As Recordset, rs7 As Recordset 'recordset servant a recuperer les informations de la bdd.
Dim MaBase As Database 'variable de type base de donnees.
Dim s1 As String, s2 As String, s3 As String, s4 As String, s5 As String, s6 As String, s7 As String 'variables de mise en forme des requetes.
Dim sNomTransaction As String, sNomProgram As String 'variable de recuperation de la valeur de transacname.
Dim i As Integer
Dim b2 As Boolean
Dim nom As String
Dim Proglist_txt As String
Dim rs8 As Recordset
Dim s8 As String



libdescrip.Text = ""
libcusto = 0

'Recuperation du nom de la transaction.
sNomTransaction = transacname.Text

'Recuperation du nom du programme.
sNomProgram = progname.Text

'Connection a la base.
Set MaBase = DBEngine.Workspaces(0).OpenDatabase(nom_base)

'Preparation de la requete qui sert a remplir la ListBox TransacDescrip.
s1 = "SELECT TRANSACTION.TRANSAC_DESCRIP FROM TRANSACTION WHERE TRANSAC_NAME='" & sNomTransaction & "'"

'Preparation de la requete qui sert a remplir la ListBox ScreenName.
s2 = "SELECT SCREENS.LIB_NAME FROM SCREENS WHERE SCREENS.TRANSAC_NAME='" & sNomTransaction & "'"

'Preparation de la requete qui sert a remplir la ListBox ModuleName.
s3 = "SELECT TO_BE_PART.MODULE_NAME FROM TO_BE_PART WHERE TO_BE_PART.TRANSAC_NAME='" & sNomTransaction & "'"

'Preparation de la requete qui sert a remplir la ListBox ProgName.
s4 = "SELECT TRANSACTION.PROG_NAME FROM TRANSACTION WHERE TRANSACTION.TRANSAC_NAME='" & sNomTransaction & "'"

'Preparation de la requete qui sert a remplir la ListBox ProgType.
s5 = "SELECT PROGRAM.PROG_TYPE FROM PROGRAM WHERE PROGRAM.PROG_NAME='" & sNomProgram & "'"

'Preparation de la requete qui sert a remplir le TextBox ProgDescrip.
s6 = "SELECT PROGRAM.PROG_DESCRIP FROM PROGRAM WHERE PROGRAM.PROG_NAME='" & sNomProgram & "'"

'Preparation de la requete qui sert a remplir le CheckBox ProgCusto.
s7 = "SELECT PROGRAM.PROG_CUSTO FROM PROGRAM WHERE PROGRAM.PROG_NAME='" & sNomProgram & "'"

s8 = "SELECT TEMPORAIRE.PROG_NAME, TEMPORAIRE.NEXT_PROG_NAME FROM TEMPORAIRE"

'Ouverture et definition des recordsets.
Set rs1 = MaBase.OpenRecordset(s1)
Set rs2 = MaBase.OpenRecordset(s2)
Set rs3 = MaBase.OpenRecordset(s3)
Set rs4 = MaBase.OpenRecordset(s4)
Set rs5 = MaBase.OpenRecordset(s5)
Set rs6 = MaBase.OpenRecordset(s6)
Set rs7 = MaBase.OpenRecordset(s7)
Set rs8 = MaBase.OpenRecordset(s8)

'Vidage des listboxs.
transaccorresp.Clear
transacdescrip.Clear
screenname.Clear
modulename.Clear
progtype.Clear
progcusto = 0
moduledescrip.Clear
libname.Clear
libtype.Clear
proglist.Clear


'Remplissage des listboxs.
While Not rs1.EOF
transacdescrip.AddItem rs1.Fields("TRANSAC_DESCRIP").Value
rs1.MoveNext
Wend

While Not rs2.EOF
screenname.AddItem rs2.Fields("LIB_NAME").Value
rs2.MoveNext
Wend

While Not rs3.EOF
modulename.AddItem rs3.Fields("MODULE_NAME").Value
rs3.MoveNext
Wend


'Remplissage du TextBox progname
Set rs4 = MaBase.OpenRecordset(s4)
If rs4.RecordCount <> 0 Then
progname.Text = NullToVide(rs4.Fields("PROG_NAME").Value)
progname.Refresh
Else
progname.Text = ""
progname.Refresh
End If


While Not rs5.EOF
'nom = progname.Container

'nom.AddItem rs5.Fields("PROG_TYPE").Value
rs5.MoveNext
Wend



'Appel de la procédure remplir_liste permettant de remplir la table TEMPORAIRE sous ACCESS

remplir_liste



'Remplissage du TextBox progdescrip
If rs6.RecordCount <> 0 Then
progdescrip.Text = NullToVide(rs6.Fields("PROG_DESCRIP").Value)
progdescrip.Refresh
Else
progdescrip.Text = ""
progdescrip.Refresh
End If


'Remplissage du CheckBox progcusto
With rs7
If .RecordCount > 0 Then
For i = 1 To .RecordCount
b2 = NullToVide(.Fields("PROG_CUSTO").Value)
If b2 = True Then
progcusto = 1
Else
progcusto = 0
End If

.MoveNext
Next i
End If
End With

'-------------------------------------------------------------------------------
'Permet de remplir le listbox proglist en 2 colonnes avec les 2 champs de la table TEMPORAIRE
While Not rs8.EOF
Proglist_txt = rs8.Fields("PROG_NAME").Value & " | " & rs8.Fields("NEXT_PROG_NAME").Value
proglist.AddItem Proglist_txt
rs8.MoveNext
Wend
'-----------------------------------------------------------


'Fermeture des recordsets.
rs1.Close
rs2.Close
rs3.Close
rs4.Close
rs5.Close
rs6.Close
rs7.Close
rs8.Close

'Liberation des recordsets.
Set rs1 = Nothing
Set rs2 = Nothing
Set rs3 = Nothing
Set rs4 = Nothing
Set rs5 = Nothing
Set rs6 = Nothing
Set rs7 = Nothing
Set rs8 = Nothing

'Liberation de la base de donnees.
Set MaBase = Nothing


End Sub


Quelqu un pourrait t il donc me dire comment faire et où le mettre dans mon code de la procédure transac_click?


merci d avance!!

Laurent


vendredi 18 octobre 2002 à 15:02:37 | Re : Insert dans ACCESS trop lent! URGENT!!!

slayeraix

merci pour ton aide mais je ne comprends pas quand tu dis d utiliser la mémoire de l ordi ou d utiliser des onglets.


je ne sais pas non plus comment faire un Do Event, c quoi la syntaxe et où le mettre dans mon code????

ensuite pour le timer comment le configurer et le mettre dans mon code???

désolé mais je DEBUTE en VB....


-------------------------------
Réponse au message :
-------------------------------

Heu perso je pense que tu devrais utiliser la memoire de l'ordi ou peutre etre des onglets et faire l'enregistrement que à la fin... c plus facile.

Pour le temps, j'ai pas le ton soruce l'es trop long mais tu peux essayer de mettre un DoEvent avant de demander la lecture de ta table temporaire.

Sinon essai avec un timer. Que tu start des que tu as engeristre ton temporaire avec un delais de dison 100 ou 200 millisec... ca devrait pouvoir tourné.

6Po
http://www.dreamersteam.org



-------------------------------
Réponse au message :
-------------------------------

J ai un problème,

j ai une procédure (remplir_liste) qui doit me remplir une table (TEMPORAIRE dans ma base ACCESS) en faisant un INSERT avec des requetes imbirqués.

J ai une autre procédure (transac_ click) qui elle, doit tout d abord appelé la précédente procédure (remplir_liste) et doit m afficher ensuite à l aide d un recordset (rs8) les champs que j ai rempli dans la table (TEMPORAIRE dans ma base ACCESS).

Mais à chaque fois ça me fait une erreur car il veut m afficher le contenu de ma table alors qu il n y a rien dans celle ci du fait que l INSERT sous ACCESS met un certain temps, trop long.

Quelqu un serait t il comment faire dans ma procédure (transac_click) pour dire que tant que ma procédure (remplir_liste) n est pas finie ou plutot tant que mon INSERT sous ACCESS n est pas fini (c plutot ca le probleme) il doit attendre pour executer mon recordset (rs8) afin d afficher le contenu de la table (TEMPORAIRE sous ACCESS), et à quel niveau le mettre dans mon code de la procédure transac_click??????????????

Ou une autre solution serait de mettre un timer mais vu que l INSERT varie en temps selon le traitement qu il effectue le timer risque d etre trop court ou trop long selon le traitement, et en plus je ne sais pas comment le faire (je débute en VB)

Je met mon code pour que ce soit plus compréhensible :



Public Sub remplir_liste()
Dim requete, requete1, requete_insertion As String
Dim liste As Variant
Dim MaBase As Database
Dim rs As Recordset



'Ouverture et definition de la base.
Set MaBase = DBEngine.Workspaces(0).OpenDatabase(nom_base)


MaBase.Execute "DELETE * FROM TEMPORAIRE"

requete = "SELECT NEXT_PROG_NAME FROM NEXT WHERE PROG_NAME='" & progname.Text & "'"

Set rs = MaBase.OpenRecordset(requete)

If Not rs.EOF Then
MaBase.Execute "INSERT INTO TEMPORAIRE SELECT PROG_NAME, NEXT_PROG_NAME FROM NEXT WHERE PROG_NAME='" & progname.Text & "'"
requete1 = "SELECT NEXT_PROG_NAME FROM NEXT WHERE PROG_NAME IN (" & requete & ")"

Set rs = MaBase.OpenRecordset(requete)

Do Until rs.EOF
requete_insertion = "INSERT INTO TEMPORAIRE SELECT PROG_NAME, NEXT_PROG_NAME FROM NEXT WHERE PROG_NAME IN (" & requete & ") AND PROG_NAME NOT IN (SELECT PROG_NAME FROM TEMPORAIRE)"

MaBase.Execute requete_insertion

requete = "SELECT NEXT_PROG_NAME FROM NEXT WHERE PROG_NAME IN (" & requete & ")"

requete1 = "SELECT NEXT_PROG_NAME FROM NEXT WHERE PROG_NAME IN (" & requete & ") AND PROG_NAME NOT IN (SELECT PROG_NAME FROM TEMPORAIRE)"

Set rs = MaBase.OpenRecordset(requete1)

Loop

End If

End Sub

__________________________________________


Private Sub transacname_click()

Dim rs1 As Recordset, rs2 As Recordset, rs3 As Recordset, rs4 As Recordset, rs5 As Recordset, rs6 As Recordset, rs7 As Recordset 'recordset servant a recuperer les informations de la bdd.
Dim MaBase As Database 'variable de type base de donnees.
Dim s1 As String, s2 As String, s3 As String, s4 As String, s5 As String, s6 As String, s7 As String 'variables de mise en forme des requetes.
Dim sNomTransaction As String, sNomProgram As String 'variable de recuperation de la valeur de transacname.
Dim i As Integer
Dim b2 As Boolean
Dim nom As String
Dim Proglist_txt As String
Dim rs8 As Recordset
Dim s8 As String



libdescrip.Text = ""
libcusto = 0

'Recuperation du nom de la transaction.
sNomTransaction = transacname.Text

'Recuperation du nom du programme.
sNomProgram = progname.Text

'Connection a la base.
Set MaBase = DBEngine.Workspaces(0).OpenDatabase(nom_base)

'Preparation de la requete qui sert a remplir la ListBox TransacDescrip.
s1 = "SELECT TRANSACTION.TRANSAC_DESCRIP FROM TRANSACTION WHERE TRANSAC_NAME='" & sNomTransaction & "'"

'Preparation de la requete qui sert a remplir la ListBox ScreenName.
s2 = "SELECT SCREENS.LIB_NAME FROM SCREENS WHERE SCREENS.TRANSAC_NAME='" & sNomTransaction & "'"

'Preparation de la requete qui sert a remplir la ListBox ModuleName.
s3 = "SELECT TO_BE_PART.MODULE_NAME FROM TO_BE_PART WHERE TO_BE_PART.TRANSAC_NAME='" & sNomTransaction & "'"

'Preparation de la requete qui sert a remplir la ListBox ProgName.
s4 = "SELECT TRANSACTION.PROG_NAME FROM TRANSACTION WHERE TRANSACTION.TRANSAC_NAME='" & sNomTransaction & "'"

'Preparation de la requete qui sert a remplir la ListBox ProgType.
s5 = "SELECT PROGRAM.PROG_TYPE FROM PROGRAM WHERE PROGRAM.PROG_NAME='" & sNomProgram & "'"

'Preparation de la requete qui sert a remplir le TextBox ProgDescrip.
s6 = "SELECT PROGRAM.PROG_DESCRIP FROM PROGRAM WHERE PROGRAM.PROG_NAME='" & sNomProgram & "'"

'Preparation de la requete qui sert a remplir le CheckBox ProgCusto.
s7 = "SELECT PROGRAM.PROG_CUSTO FROM PROGRAM WHERE PROGRAM.PROG_NAME='" & sNomProgram & "'"

s8 = "SELECT TEMPORAIRE.PROG_NAME, TEMPORAIRE.NEXT_PROG_NAME FROM TEMPORAIRE"

'Ouverture et definition des recordsets.
Set rs1 = MaBase.OpenRecordset(s1)
Set rs2 = MaBase.OpenRecordset(s2)
Set rs3 = MaBase.OpenRecordset(s3)
Set rs4 = MaBase.OpenRecordset(s4)
Set rs5 = MaBase.OpenRecordset(s5)
Set rs6 = MaBase.OpenRecordset(s6)
Set rs7 = MaBase.OpenRecordset(s7)
Set rs8 = MaBase.OpenRecordset(s8)

'Vidage des listboxs.
transaccorresp.Clear
transacdescrip.Clear
screenname.Clear
modulename.Clear
progtype.Clear
progcusto = 0
moduledescrip.Clear
libname.Clear
libtype.Clear
proglist.Clear


'Remplissage des listboxs.
While Not rs1.EOF
transacdescrip.AddItem rs1.Fields("TRANSAC_DESCRIP").Value
rs1.MoveNext
Wend

While Not rs2.EOF
screenname.AddItem rs2.Fields("LIB_NAME").Value
rs2.MoveNext
Wend

While Not rs3.EOF
modulename.AddItem rs3.Fields("MODULE_NAME").Value
rs3.MoveNext
Wend


'Remplissage du TextBox progname
Set rs4 = MaBase.OpenRecordset(s4)
If rs4.RecordCount <> 0 Then
progname.Text = NullToVide(rs4.Fields("PROG_NAME").Value)
progname.Refresh
Else
progname.Text = ""
progname.Refresh
End If


While Not rs5.EOF
'nom = progname.Container

'nom.AddItem rs5.Fields("PROG_TYPE").Value
rs5.MoveNext
Wend



'Appel de la procédure remplir_liste permettant de remplir la table TEMPORAIRE sous ACCESS

remplir_liste



'Remplissage du TextBox progdescrip
If rs6.RecordCount <> 0 Then
progdescrip.Text = NullToVide(rs6.Fields("PROG_DESCRIP").Value)
progdescrip.Refresh
Else
progdescrip.Text = ""
progdescrip.Refresh
End If


'Remplissage du CheckBox progcusto
With rs7
If .RecordCount > 0 Then
For i = 1 To .RecordCount
b2 = NullToVide(.Fields("PROG_CUSTO").Value)
If b2 = True Then
progcusto = 1
Else
progcusto = 0
End If

.MoveNext
Next i
End If
End With

'-------------------------------------------------------------------------------
'Permet de remplir le listbox proglist en 2 colonnes avec les 2 champs de la table TEMPORAIRE
While Not rs8.EOF
Proglist_txt = rs8.Fields("PROG_NAME").Value & " | " & rs8.Fields("NEXT_PROG_NAME").Value
proglist.AddItem Proglist_txt
rs8.MoveNext
Wend
'-----------------------------------------------------------


'Fermeture des recordsets.
rs1.Close
rs2.Close
rs3.Close
rs4.Close
rs5.Close
rs6.Close
rs7.Close
rs8.Close

'Liberation des recordsets.
Set rs1 = Nothing
Set rs2 = Nothing
Set rs3 = Nothing
Set rs4 = Nothing
Set rs5 = Nothing
Set rs6 = Nothing
Set rs7 = Nothing
Set rs8 = Nothing

'Liberation de la base de donnees.
Set MaBase = Nothing


End Sub


Quelqu un pourrait t il donc me dire comment faire et où le mettre dans mon code de la procédure transac_click?


merci d avance!!

Laurent





Cette discussion est classé dans : set, prog, requete, name, mabase


Répondre à ce message

Sujets en rapport avec ce message

Insert dans ACCESS trop lent! URGENT!!! [ par slayeraix ] J ai un problème, j ai une procédure (remplir_liste) qui doit me remplir une table (TEMPORAIRE dans ma base ACCESS) en faisant un INSERT avec des requ {petit casse-tete} requete WMI et filtre avec la commande if then [ par kerberos69 ] Bonjour a tousvoila je suis en plein dans la redaction d'un script vbs, je me debrouille mais je ne suis pas un expert.l'objectif est de lister tous l SVP! SUPER URGENT! Pb pour affichage requete [ par slayeraix ] Je viens de faire une base de donnees ACCESS qui contient des noms de programme. Je passe maintenant a l etape de VB.J ai un combo box(liste deroulant J ai besoin d aide!!!! affichage requete qui ne marche pas!!! [ par slayeraix ] J ai déjà envoyé 2 fois ma question sur le forum mais seulement 2 personne m ont répondus et mon probleme n est toujours pas réglé!!! Donc je relance requete count [ par guylux ] bonjourjai un petit pb pour recupererles valeurs d'une requete avec count(*)voila c bidon mais:"Set mabase = CurrentDb()nbordi = "select count(*) from méthode openrecordset [ par pedrolane ] j'ai un petit problème pour utiliser cette méthodevoici mon code:Dim mabase As DatabaseDim janvier As RecordsetSet mabase = opendatabase("contactrh", Probleme VBA help [ par yaya31 ] bonjour a tousVoila mon probleme:J ai un formulaire qui me calcul le nombre de composant necessaire a la fabrication de produit. Or j aimerais que dan Rafrechire un requete access avec VB et data environement [ par asem67 ] Salut tous monde voila mon problemeune fois mon prog demarer j'entre une nouvelles donnee sur une bd access jusq'a la tous vas bien puis je rentre un Probleme de comptage [ par SigurRos ] Bonjour voici le code :il importe les données contenu dans un mail : login, passwordet j execute une requete sur une table Authentification qui contie Recordset et mémoire [ par ctof3552 ] Slt !Lorsqu'on ouvre pls fois un meme recordset dans une fonction (avec des requetes differentes), faut il absolument le décharger (le mettre a nothin


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,296 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.