didmousta
Messages postés27Date d'inscriptionmardi 7 novembre 2006StatutMembreDernière intervention14 novembre 2007
-
27 nov. 2006 à 18:53
didmousta
Messages postés27Date d'inscriptionmardi 7 novembre 2006StatutMembreDernière intervention14 novembre 2007
-
29 nov. 2006 à 11:02
Salut,
voila mon code
-----------------------------------------
Private Sub Next_Click()
Dim Fso
Dim sQuery, sLogFile, sDate As String
Dim oConn As New ADODB.Connection
Dim oRs As New ADODB.Recordset
oRs.Close
oConn.Close
Set oRs = Nothing
Set oConn = Nothing
End Sub
------------------------------------------------
mais il ne fait pas la boucle comme il faut.
Pourriez vous m'aider.
Merci.
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 27 nov. 2006 à 20:19
Salut
Le problème, c'est que tu recherches les résultats à chaque fois que tu cliques sur Next, donc, c'est normal qu'il ne t'affiche que le premier enregistrement.
Il faut questionner la DB dans une procédure distincte qui ne sera exécutée qu'une seule fois, et ne garder que ces lignes dans ton Next_Click :
oRs.MoveNext
Browser1.Navigate oRs!file
Ce n'est pas le programme qui boucle, c'est toi en cliquant sur Next, donc pas de boucle.
Pour que cela marche, il faut bien sûr que 'oRs' soit accessible de n'importe où dans le code, donc il faut le dimensionner dans la partie déclaration de ta forme et penser à faire un oRs.Close avant de le réutiliser plus tard.
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Champion du monde de boule de cristal - 2005 Le savoir est la seule matière qui s'accroit quand on
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201822 28 nov. 2006 à 23:40
Je ne referai pas le programme, mais pour te donner une idée, voici comment je ferais, en espérant que je comprenne ton programme un peu...
Function LoadList() As Integer
Dim Fso
Dim sUrl$
Dim i, iRec As Integer
Dim sVal, sSheet, sQuery, sLogFile, sDate, sPath, first As String
'Mettre cette ligne en commentaire
'elle est déjà déclarée en entête de feuille
' Dim oConn As New ADODB.Connection
' Dim oRs As New ADODB.Recordset
sDate = Format(Date, "yyyymmdd")
sLogFile = SourceDir + "LOG_" + sDate + ".dbf"
Set Fso = CreateObject("Scripting.FileSystemObject")
If Fso.fileexists(sLogFile) Then
oConn.open "provider=vfpoledb;data source=C:\;"
sQuery = "Select file from " + sLogFile + " where status<>'o'"
oRs.open sQuery, oConn
While oRs.EOF = False
List1.AddItem oRs!file
oRs.MoveNext
Wend
oRs.MoveFirst
Browser1.Navigate oRs!file
' oRs.Close
'Mettre la ligne suivante en commentaire pour garder la base active
' oConn.Close
End If
' Set Fso = Nothing
' Set oRs = Nothing
'Mettre la ligne suivante en commentaire
' Set oConn = Nothing
End Function Private Sub Next_Click()
'Dim Fso
'Dim sQuery, sFile, si, sPath As String
Dim sLogFile, sDate
'Mettre la ligne suivante en commentaire... déjà déclarée en entête de feuille
' Dim oConn As New ADODB.Connection
'Dim oRs As New ADODB.Recordset
sDate = Format(Date, "yyyymmdd")
sLogFile = SourceDir + "LOG_" + sDate + ".dbf"
'Ces lignes sont déjà déclarées dans la procédure LoadList()
' oConn.open "provider=vfpoledb;data source=C:\;"
' sQuery = "Select file from " + sLogFile + " where status<>'o'"
' oRs.open sQuery, oConn
If not oRs.EOF then ' à ajouter
oRs.MoveNext
Browser1.Navigate oRs!file
End If 'à ajouter
' oRs.Close
' oConn.Close
' Set oRs = Nothing
' Set oConn = Nothing
' i = 1
' si = Str(i)
' si = Format(si, "000000")
' sDate = Format(Date, "yyyymmdd")
' sPath = "D:\fdcTreat\EBP\Source\20061127"
' sFile = sPath & "" & sDate & si & incremente & ".html"
End Sub
Ça donnerait quelque chose comme ça
Et lorsque tu termines le programme ou quand tu n'as plus besoin d'utiliser la base de données, tu mets ces lignes
oRs.Close
oConn.Close
Set oRs = Nothing
Set oConn = Nothing
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 27 nov. 2006 à 19:56
Salut
Ok, c'est du code ...
Mais qu'est-il sensé faire ?
C'est pas à ton gout Ok, mais dis nous ce qu'il devrait faire, ce qu'il fait, ce qui ne te plait pas ...
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
didmousta
Messages postés27Date d'inscriptionmardi 7 novembre 2006StatutMembreDernière intervention14 novembre 2007 27 nov. 2006 à 20:03
Salut,
Je veux à chaque fois que je clic sur le bouton next,le browser1 affiche la page html suivante et ainsi de suite jusqu'a la fin des pages existant dans la base de données.
Merci.
Vous n’avez pas trouvé la réponse que vous recherchez ?
didmousta
Messages postés27Date d'inscriptionmardi 7 novembre 2006StatutMembreDernière intervention14 novembre 2007 28 nov. 2006 à 09:23
Salut,
voila mon code:
--------------------------------------
Const SourceDir = "d:\fdcTreat\EBP\Source"
Const ParamFile = "d:\fdcTreat\EBP\Parametres\EBP_PARAM.dbf"
Const LogFile = "d:\fdcTreat\EBP\Parametres\EBP_LOG.dbf"
Dim i As Integer
Dim oConn As New ADODB.Connection
Dim oRs As New ADODB.Recordset
Private Sub Browser1_StatusTextChange(ByVal Text As String)
' Dim oConn As New ADODB.Connection
' Dim oRs As New ADODB.Recordset
sDate = Format(Date, "yyyymmdd")
sLogFile = SourceDir + "LOG_" + sDate
'Browser1.Navigate "D:\fdcTreat\EBP\Source\20061127\20061127000001.html"
End Sub
Private Sub Combo1_Change()
Dim sDate As String
sDate = Format(Date, "YYYYMMDD")
Combo1.AddItem sDate
End Sub
Private Sub Load_Click()
LoadList
End Sub
Function LoadList() As Integer
Dim Fso
Dim sUrl$
Dim i, iRec As Integer
Dim sVal, sSheet, sQuery, sLogFile, sDate, sPath, first As String
Dim oConn As New ADODB.Connection
' Dim oRs As New ADODB.Recordset
sDate = Format(Date, "yyyymmdd")
sLogFile = SourceDir + "LOG_" + sDate + ".dbf"
Set Fso = CreateObject("Scripting.FileSystemObject")
If Fso.fileexists(sLogFile) Then
oConn.open "provider=vfpoledb;data source=C:\;"
sQuery = "Select file from " + sLogFile + " where status<>'o'"
oRs.open sQuery, oConn
While oRs.EOF = False
List1.AddItem oRs!file
oRs.MoveNext
Wend
oRs.MoveFirst
Browser1.Navigate oRs!file
' oRs.Close
oConn.Close
End If
' Set Fso = Nothing
' Set oRs = Nothing
Set oConn = Nothing
End Function
Private Sub Next_Click()
Dim Fso
Dim sQuery, sLogFile, sDate, sFile, si, sPath As String
Dim oConn As New ADODB.Connection
'Dim oRs As New ADODB.Recordset
sDate = Format(Date, "yyyymmdd")
sLogFile = SourceDir + "LOG_" + sDate + ".dbf"
oConn.open "provider=vfpoledb;data source=C:\;"
sQuery = "Select file from " + sLogFile + " where status<>'o'"
oRs.open sQuery, oConn
oRs.MoveNext
Browser1.Navigate oRs!file
' oRs.Close
' oConn.Close
' Set oRs = Nothing
' Set oConn = Nothing
' i = 1
' si = Str(i)
' si = Format(si, "000000")
' sDate = Format(Date, "yyyymmdd")
' sPath = "D:\fdcTreat\EBP\Source\20061127"
' sFile = sPath & "" & sDate & si & incremente & ".html"
End Sub
------------------------------------------
à l'execution l'application passe au deuxieme enregistrement, puis le troisieme clic genere une erreur de type:
Erreur '3705' la methode open de l'objet '_Connection' a echoué.
SVP pourriez vous me dire ou est l'erreur?
merci d'avance.
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201822 28 nov. 2006 à 10:53
oConn ne devrait être utilisé qu'une seule fois et demeurer ouvert le temps de la session.
Si tu tentes de le rouvrir sans l'avoir fermé, ça générera une erreur.
Pour pouvoir utiliser un bouton Suivant, Précédent,... il faut que oRs soit déclaré à l'ouverture de la connexion et demeure ouvert le temps de la session.
Bouton Suivant:
If Not oRs.EOF then oRs.Movenext
Bouton Précédent:
If Not oRs.BOF then oRs.Moveprevious
Il ne faut pas utiliser de boucle du genre Do Until...Movenext...Loop
sinon, tu seras toujours au dernier ou au premier enregistrement sans pouvoir lire les autres.
didmousta
Messages postés27Date d'inscriptionmardi 7 novembre 2006StatutMembreDernière intervention14 novembre 2007 28 nov. 2006 à 11:37
Salut,
SVP pourriez vous me rectifier le programme parceque j'ai essayé de declarer oConn et oRs comme variable globale mais ça marche pas.il rsete toujours le même probleme.
Je serai très reconnaissant.
didmousta
Messages postés27Date d'inscriptionmardi 7 novembre 2006StatutMembreDernière intervention14 novembre 2007 28 nov. 2006 à 11:38
Salut,
SVP pourriez vous me rectifier le programme parceque j'ai essayé de declarer oConn et oRs comme variable globale mais ça marche pas.il rsete toujours le même probleme.
Je serai très reconnaissant.