Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1

    VB6 - Tipo Parametro ByRef

    Ciao,
    non riesco a capire di che tipo debba essere il parametro di una funzione che ho creato

    la Funzione si chiama RetrieveIdCust e riceve in ingresso una ComboBox ed il campo di un ADODB recordset


    rs1.Source = "SELECT * FROM DRIVER WHERE ID_DRIVER='" & TxtId.Text & "'"
    rs1.Open
    'Modifica
    If Not rs1.EOF Then
    TxtNome.Text = Trim(rs1("DRIVER_NAME")) & ""
    CmbLun.ListIndex = RetrieveIdCust(CmbLun, rs1("LUN_ID_CUST"))
    ........


    nella funzione io ho dichiarato i parametri così:


    Private Function RetrieveIdCust(ByRef Combo As Object, id As ADODB.Recordset) As Integer


    Ma non funziona, l'errore è il seguente: Tipo non corrispondente per l'argomento ByRef

    Dove sbaglio???

  2. #2
    Utente di HTML.it L'avatar di Brainjar
    Registrato dal
    Nov 2004
    Messaggi
    1,162
    Non si capisce cosa centri il frammento di codice postato.
    Per la dichiarazione corretta della funzione :
    codice:
    Private Function RetrieveIdCust(ByRef Combo As ComboBox , id As ADODB.Recordset) As Integer
    Ciao, Brainjar

  3. #3
    forse non sono stato chiaro, ma il parametro che non mi riconosce è l'altro, il campo del recordset

  4. #4
    Utente di HTML.it L'avatar di Brainjar
    Registrato dal
    Nov 2004
    Messaggi
    1,162
    Posta il codice dove richiami questa funzione, per capire cosa passi.
    a prima vista sembra che passi un id, integer, ma la funzione si aspetta addirittura
    un recordset ....
    Ciao, Brainjar

  5. #5
    rs1.Source = "SELECT * FROM DRIVER WHERE ID_DRIVER='" & TxtId.Text & "'"
    rs1.Open
    'Modifica
    If Not rs1.EOF Then
    TxtNome.Text = Trim(rs1("DRIVER_NAME")) & ""
    CmbLun.ListIndex = RetrieveIdCust (CmbLun, rs1("LUN_ID_CUST"))


    era quel frammento di codice che non capivi

    rs1("LUN_ID_CUST") è un campo di tipo INTEGER

  6. #6
    Utente di HTML.it L'avatar di Brainjar
    Registrato dal
    Nov 2004
    Messaggi
    1,162
    Originariamente inviato da Brainjar
    Posta il codice dove richiami questa funzione, per capire cosa passi.
    a prima vista sembra che passi un id, integer, ma la funzione si aspetta addirittura
    un recordset ....
    Allora io il codice lho capito :
    1) Passi un integer ed invece dichiari come parametro un recordset.

    Correggi con
    codice:
    Private Function RetrieveIdCust(ByRef Combo As ComboBox , id As Integer ) As Integer
    Ciao, Brainjar

  7. #7
    bravo. E' la prima cosa che ho fatto anch'io, dichiararlo Integer

    Solo che non funziona

  8. #8
    Utente di HTML.it L'avatar di Brainjar
    Registrato dal
    Nov 2004
    Messaggi
    1,162
    1^ Regola : Postare il codice che non funziona.
    2^ Regola : Postarlo tutto. Utilizzando il tag '#'
    3^ Regola : Riportare le segnalazioni di errore.
    4^ Regola : Spiegare cosa dovrebbe fare il codice incriminato.
    Ciao, Brainjar

  9. #9
    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

  10. #10
    Utente di HTML.it L'avatar di Brainjar
    Registrato dal
    Nov 2004
    Messaggi
    1,162
    Io ti avevo suggerito :
    codice:
    Private Function RetrieveIdCust(ByRef Combo As ComboBox , id As Integer ) As Integer
    
    ' Ho visto che ha cambiato nome ....... o hai veramente tutte e due le funzioni ? bho .......
    
    Private Function DecodeIdCust(ByRef Combo As ComboBox , id As Integer ) As Integer
    Utilizza ComboBox al posto di Object.
    Un oggetto di tipo generico, 'object' non ha i metodi di una combo : Combo.List(...) ecc..
    Ciao, Brainjar

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.