lap2
Messages postés36Date d'inscriptionmardi 3 août 2004StatutMembreDernière intervention 9 novembre 2007
-
26 janv. 2007 à 10:16
lap2
Messages postés36Date d'inscriptionmardi 3 août 2004StatutMembreDernière intervention 9 novembre 2007
-
29 janv. 2007 à 14:46
Salut à tous,
Il s'agit d'un projet de base de donnée avec une Sub de recherche d'enregistrement. Elle marche très bien lorsque qu'elle est exécutée depuis l'application mais ne marche plus après compilation.
Pourtant il n'y a aucun message d'erreur. Je sélectionne l'enregistrement que je veux charger dans la liste, le message dit que l'enregistrement a été extrait mais cela n'est pas le cas!
Est-ce quelqu'un sait pourquoi ?
Code côté visionneuse de la base :
Case "btnRechercher"
Dim iReturn As Integer
gFindString = ""
StatusBar1.Panels.Item(2).Text = "Recherche en cours..."
With frmRechercher
.AddCaption = "Entrez le nom du déchet à trouver"
.recordSource = "SELECT DesignDech FROM Dechet ORDER BY DechID"
.Show vbModal
End With
If (Len(gFindString) > 0) Then
With ctrlData1.Recordset
.FindFirst "DesignDech = '" & gFindString & "' "
If (.NoMatch) Then
iReturn = MsgBox("Le déchet <" & Replace(gFindString, "''", "'") & _
" > n'a pas été trouvé.", vbCritical, "déchet")
Else
iReturn = MsgBox("Le déchet < " & Replace(gFindString, "''", "'") & _
" > a été extrait", vbInformation, "Déchet")
End If
End With
End If
Code côté FrmRechercher ( VB MODAL) :
Public Property Let recordSource(ByVal strNewValue As String)
ctrlRechercher.recordSource = strNewValue
End Property
Public Property Let AddCaption(ByVal strNewValue As String)
lblDirectives = strNewValue
End Property
Private Sub cmdAnnuler_Click()
Unload Me
End Sub
Private Sub Form_Activate()
gDataBaseName = App.Path & "\gestDechMarkIV.mdb"
List1.Enabled = False
ctrlRechercher.DatabaseName = gDataBaseName
ctrlRechercher.Refresh
If (ctrlRechercher.Recordset.RecordCount > 0) Then
Screen.MousePointer = vbHourglass
ctrlRechercher.Recordset.MoveFirst
While Not ctrlRechercher.Recordset.EOF
List1.AddItem ctrlRechercher.Recordset.Fields(0) & ""
ctrlRechercher.Recordset.MoveNext
Wend
List1.Enabled = True
DoEvents
End If
lblCompteur = "Il y a " & ctrlRechercher.Recordset.RecordCount & " enregistrements"
Screen.MousePointer = vbDefault
End Sub
Private Sub Form_Unload(Cancel As Integer)
Set frmRechercher = Nothing
End Sub
Private Sub List1_DblClick()
'Obtient l'élément sur lequel l'utilisateur a cliqué et l'affecte à gFindString
If (InStr(List1, "'")) Then
gFindString = Replace(List1, "'", "''")
Else
gFindString = List1
End If
Unload frmRechercher
End Sub
Private Sub txtRechercher_Change()
Dim entryNum As Long
Dim txtARechercher As String
txtARechercher = txtRechercher.Text
entryNum = sendMessageByString(List1.hWnd, LB_SELECTSTRING, 0, txtARechercher)
lap2
Messages postés36Date d'inscriptionmardi 3 août 2004StatutMembreDernière intervention 9 novembre 2007 29 janv. 2007 à 14:46
Pour ceux qui se seraient posés la question, j'ai fini par trouver. Il faut laisser le temps au système de solder tous les évennements avant de passer d'un form à l'autre. J'ai donc ajouté :
DoEvents entre les deux et plus de problème!
Case "btnRechercher"
Dim iReturn As Integer
gFindString = ""
StatusBar1.Panels.Item(2).Text = "Recherche en cours..."
With frmRechercher
.AddCaption = "Entrez le nom du déchet à trouver"
.recordSource = "SELECT DesignDech FROM Dechet ORDER BY DechID"
.Show vbModal
End With
DoEvents
If (Len(gFindString) > 0) Then
With ctrlData1.Recordset
.FindFirst "DesignDech = '" & gFindString & "' "
If (.NoMatch) Then
iReturn = MsgBox("Le déchet <" & Replace(gFindString, "''", "'") & _
" > n'a pas été trouvé.", vbCritical, "déchet")
Else
iReturn = MsgBox("Le déchet < " & Replace(gFindString, "''", "'") & _
" > a été extrait", vbInformation, "Déchet")