Type de données incompatible dans l'expression du critère
cs_betty9
Messages postés9Date d'inscriptionlundi 5 octobre 2009StatutMembreDernière intervention28 juin 2010
-
21 déc. 2009 à 11:12
cs_betty9
Messages postés9Date d'inscriptionlundi 5 octobre 2009StatutMembreDernière intervention28 juin 2010
-
21 déc. 2009 à 11:49
Bonjour tout le monde :)
Voila j'ai un problème avec mon code VB6;le code marche trés bien sur mon ordi c-a-d avant de générer l'exe,même aprés l'exe ca marche mais une fois je rajoute une nouvelle opération et je click sur le ms_flexgrid 'FG_opération' afin d'afficher les info relatives a cette opération; ca bug et ca me donne 'type de données incompatible dans l'expression du critère'
voila le code du click du ms_flexgrid:
Private Sub FG_opération_Click()
On Error Resume Next ' pour détourner l'erreur de null non autoriser
'Remplire les controle a partir de la liste
Set rsafficher = New ADODB.Recordset
rsafficher.Open "Select * from OPERATION where (OPER_CODE like (" & FG_opération.Text & "))", cn, 1, 2
Set rs = New ADODB.Recordset
Dim sql As String
sql = " SELECT OPERATION.OPER_CODE, LOCALISATION_OPER.OPER_CODE, LOCALISATION_OPER.SITE_CODE AS S, LOCALISATION_OPER.EQIP_CODE AS EC, LOCALISATION_OPER.LOCA_CODE AS L, LOCALISATION_OPER.BAT_CODE AS B, LOCALISATION_OPER.ZONE_CODE AS Z, LOCALISATION_OPER.DOM_CODE AS D, LOCALISATION_OPER.AFFA_CODE AS A, LOCALISATION_OPER.DOM_CODE AS DC, LOCALISATION_OPER.OPER_T_DEF AS TDEF, LOCALISATION_OPER.TRAV_CODE AS TC, LOCALISATION_OPER.PAR AS PAR" & _
" FROM OPERATION INNER JOIN LOCALISATION_OPER ON OPERATION.OPER_CODE = LOCALISATION_OPER.OPER_CODE" & _
" where (LOCALISATION_OPER.OPER_CODE) = " & FG_opération.Text & ""
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 21 déc. 2009 à 11:27
Salut
Sur quelle ligne as-tu cette erreur ?
Que valent les variables présentes sur cette ligne au moment de l'erreur ?
Il y a de fortes chances que ce soit à cause d'un champ dont le contenu est NULL.
A quoi sert la fonction "ZN" ?
Pour info :
"... where (OPER_CODE like (" & FG_opération.Text & "))"
sous-entend que le champ "OPER_CODE" est un chiffre (dans la définition de la DB)
Puisque tu n'as pas utilisé de caractère de subsitution (% ou _) dans la partie droite du LIKE, il est donc inutile : Tu gagneras en temps de réponse en le remplaçant par un simple signe =
Evite les parenthèses inutiles.
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
cs_betty9
Messages postés9Date d'inscriptionlundi 5 octobre 2009StatutMembreDernière intervention28 juin 2010 21 déc. 2009 à 11:49
Merci jack pour la réponse,
en fait il y a du nouveau, si t'as remarqué a la fin de la fonction en haut il y a l'appel de la fonction 'afficher_inter' cette fonction permet d'afficher les intervenants de cette opération, et lorsque je mets cette fonction en commentaire ca marche ca veut dire que le probléme vient de la; mais je trouve pas le probléme sur cette fonction
PS: ZN c'est la fonction zone null qui gére les vides
voila le code de cette fonction ,et le codes des fonctions qu'elle appel a son tour:
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Public Sub afficher_inter()
On Error Resume Next ' pour détourner l'erreur de null non autoriser
With Ad
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & app.Path & "\base\AGM6.mdb" & ";Persist Security Info=False"
.CommandType = adCmdText
End With
Ad.RecordSource = "SELECT * from OPER_INTERV " & _
" Where OPER_CODE = cvar(' " & OPER_CODE & " ') "
'" ORDER BY DATE"
Ad.Refresh
Set liste_intervenant.DataSource = Ad
date_max
date_min
duree
duree_h
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub date_max()
On Error Resume Next
Dim d As ADODB.Recordset
Set d = New ADODB.Recordset
d.Open "SELECT MAX(Date) from OPER_INTERV Where OPER_CODE = cvar(' " & OPER_CODE1 & " ') ", cn, 1, 2
OPER_DATEFINR1 = d(0)
cn.Execute ("update operation set OPER_DATEFINR='" & CDate(d(0)) & "' Where OPER_CODE = cvar(' " & OPER_CODE1 & " ') ")
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub date_min()
On Error Resume Next
Dim d As ADODB.Recordset
Set d = New ADODB.Recordset
d.Open "SELECT MIN(Date) from OPER_INTERV Where OPER_CODE = cvar(' " & OPER_CODE1 & " ') ", cn, 1, 2
OPER_DATEDEBUTR1 = d(0)
cn.Execute ("update operation set OPER_DATEDEBUTR='" & CDate(d(0)) & "' Where OPER_CODE = cvar(' " & OPER_CODE1 & " ') ")
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub duree()
On Error Resume Next
OPER_DUREEJOURR1 = CDate(OPER_DATEFINR1) - CDate(OPER_DATEDEBUTR1) + 1
cn.Execute ("update operation set OPER_DUREEJOURR='" & CVar(OPER_DUREEJOURR1) & "' Where OPER_CODE = cvar(' " & OPER_CODE1 & " ') ")
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub duree_h()
On Error Resume Next
Dim d As ADODB.Recordset
Set d = New ADODB.Recordset
d.Open "SELECT SUM(Nbr_heure) from OPER_INTERV Where OPER_CODE = cvar(' " & OPER_CODE1 & " ') ", cn, 1, 2
OPER_DUREEPRESR1 = d(0)
cn.Execute ("update operation set OPER_DUREEPRESR='" & CVar(d(0)) & "' Where OPER_CODE = cvar(' " & OPER_CODE1 & " ') ")