ok, ricominciamo da capo
Nella routine cmdOK_Click qui sotto richiamo la funzione DecodeIdCust passando come parametro una ComboBox ed un Integer.
Come è scritta adesso funziona correttamente, io però vorrei evitare di utilizzare la variabile id passando direttamente il campo del recordeset in questo modo:
DecodeIdCust(CmbLun, rs1("LUN_ID_CUST"))
Solo che non riesco a capire di che tipo deve essere il parametro nella funzione, perchè mi ritorna sempre questo errore:Tipo non corrispondente per l'argomento ByRef
codice:
Private Sub cmdOK_Click()
Dim id As Integer
If TxtId.Text = "" Then Exit Sub
If HidId = "" Then
rs1.Source = "SELECT * FROM DRIVER WHERE ID_DRIVER='" & TxtId.Text & "'"
rs1.Open
'Modifica
If Not rs1.EOF Then
TxtNome.Text = Trim(rs1("DRIVER_NAME")) & ""
TxtMezzo.Text = Trim(rs1("ID_CAMION")) & ""
TxtRimorchio.Text = Trim(rs1("ID_RIMORCHIO")) & ""
TxtMezzoSost.Text = Trim(rs1("ID_CAMION_SOST")) & ""
TxtRimorchioSost.Text = Trim(rs1("ID_RIMORCHIO_SOST")) & ""
If rs1("LUN_ID_CUST") <> 0 Then
id = rs1("LUN_ID_CUST")
CmbLun.ListIndex = DecodeIdCust(CmbLun, id)
End If
If rs1("MAR_ID_CUST") <> 0 Then
id = rs1("MAR_ID_CUST")
CmbMar.ListIndex = DecodeIdCust(CmbMar, id)
End If
If rs1("MER_ID_CUST") <> 0 Then
id = rs1("MER_ID_CUST")
CmbMer.ListIndex = DecodeIdCust(CmbMer, id)
End If
If rs1("GIO_ID_CUST") <> 0 Then
id = rs1("GIO_ID_CUST")
CmbGio.ListIndex = DecodeIdCust(CmbGio, id)
End If
If rs1("VEN_ID_CUST") <> 0 Then
id = rs1("VEN_ID_CUST")
CmbVen.ListIndex = DecodeIdCust(CmbVen, id)
End If
If rs1("SAB_ID_CUST") <> 0 Then
id = rs1("SAB_ID_CUST")
CmbSab.ListIndex = DecodeIdCust(CmbSab, id)
End If
If rs1("DOM_ID_CUST") <> 0 Then
id = rs1("DOM_ID_CUST")
CmbDom.ListIndex = DecodeIdCust(CmbDom, id)
End If
CmbStatus.Text = Trim(rs1("STATUS"))
Inserimento = False
Else
'Inserimento
If Messaggio("143") Then
TxtId.Text = ""
TxtNome.Text = ""
TxtMezzo.Text = ""
TxtRimorchio.Text = ""
TxtMezzoSost.Text = ""
TxtRimorchioSost.Text = ""
CmbStatus.Text = "Aperto"
Inserimento = True
End If
End If
rs1.Close
HidId = TxtId.Text
TxtId.Enabled = False
TxtNome.Enabled = True
TxtMezzo.Enabled = True
TxtRimorchio.Enabled = True
TxtMezzoSost.Enabled = True
TxtRimorchioSost.Enabled = True
CmbLun.Enabled = True
CmbMar.Enabled = True
CmbMer.Enabled = True
CmbGio.Enabled = True
CmbVen.Enabled = True
CmbSab.Enabled = True
CmbDom.Enabled = True
CmbStatus.Enabled = True
CmdSearchDriver.Enabled = False
CmdSearchCamion1.Enabled = True
CmdSearchCamion2.Enabled = True
CmdSave.Enabled = True
CmdDelete.Enabled = True
Else
'Controlli Validità
CheckDriver
End If
End Sub
e questa è la funzione richiamata:
codice:
Private Function DecodeIdCust(ByRef Combo As Object, id As Integer) As Integer
Dim i As Integer
DecodeIdCust = 0
If id <> 0 Then
rs2.Source = "SELECT CUST_NAME FROM CUSTOMER WHERE ID_CUST=" & id
rs2.Open
If Not rs2.EOF Then
For i = 0 To Combo.ListCount - 1
If UCase$(Combo.List(i)) = UCase$(rs2("CUST_NAME")) Then
DecodeIdCust = i
Exit For
End If
Next
End If
rs2.Close
End If
End Function