Function per confrontare i nomi di una tabella con un campo di una form

di il
4 risposte

Function per confrontare i nomi di una tabella con un campo di una form

Ciao,

Come avevo scritto in un'altro post ho l'esigenza di confrontare il nome delle colonne contenute in una tabella con un campo che viene inserito manualmente in una form.

Quindi ho scritto:
Function Confronta()

Dim nome_colonna1 As DAO.Field
Dim nome_colonna2 As DAO.Field

For Each nome_colonna1 In DBEngine(0)(0).TableDefs("CONF005b").Fields
    Verifica1 = 1
    If Verifica1 > nome_colonna1.Name Then GoTo 100
    Conta1 = Conta1 + 1
    
    For Each nome_colonna2 In DBEngine(0)(0).TableDefs("CONF005b").Fields
        conta2 = conta2 + 1
        If conta2 = Conta1 + 1 Then
            Debug.Print nome_colonna1.Name & " - " & nome_colonna2.Name 'verifico cosa trova
	'istruzioni per calcolare il valore curva
            conta2 = 0
            GoTo 100
        End If
    Next
100
Next

End Function
Funziona perfettamente e mi da il nome della prima e seconda colonna, e se la condizione soddisfa
nome_colonna1.Name < Valore Form < nome_colonna2.Name poi gli faro eseguire dei calcoli.

Mi chiedevo se pero non ci fosse un modo piu semplice e pulito, un equivalente di excel come:

nome_colonna1 = DBEngine(0)(0).TableDefs("CONF005b").Fields
nome_colonna2 = DBEngine(0)(0).TableDefs("CONF005b").Fields +1

In modo da evitare il secondo ciclo For, ho fatto un po di ricerche ma non sono venuto a capo di nulla, funziona ma se posso migliorare la cosa tanto meglio...

4 Risposte

  • Re: Function per confrontare i nomi di una tabella con un campo di una form

    Potresti provare ad accedere direttamente alle proprietà del campo:
    
    Nome = DBEngine(0)(0).TableDefs("CONF005b").Fields(NOMECAMPO).Name
    Valore = DBEngine(0)(0).TableDefs("CONF005b").Fields(NOMECAMPO).Value
    Poi, per accedere al successivo puoi ottenere prima l'indice di quello corrente ed aggiungervi 1:
    
    Indice = DBEngine(0)(0).TableDefs("CONF005b").Fields(NOMECAMPO).Index
    Nome = DBEngine(0)(0).TableDefs("CONF005b").Fields(Indice + 1).Name
  • Re: Function per confrontare i nomi di una tabella con un campo di una form

    gibra ha scritto:


    Potresti provare ad accedere direttamente alle proprietà del campo:
    
    Nome = DBEngine(0)(0).TableDefs("CONF005b").Fields(NOMECAMPO).Name
    Valore = DBEngine(0)(0).TableDefs("CONF005b").Fields(NOMECAMPO).Value
    Poi, per accedere al successivo puoi ottenere prima l'indice di quello corrente ed aggiungervi 1:
    
    Indice = DBEngine(0)(0).TableDefs("CONF005b").Fields(NOMECAMPO).Index
    Nome = DBEngine(0)(0).TableDefs("CONF005b").Fields(Indice + 1).Name
    Intanto grazie, purtroppo no, cosi non va, ho provato con:

    Nome = DBEngine(0)(0).TableDefs("CONF005b").Fields("ID").Name
    Variabile del blocco with non impostata

    Valore = DBEngine(0)(0).TableDefs("CONF005b").Fields("ID").Value
    Operazione non valida
  • Re: Function per confrontare i nomi di una tabella con un campo di una form

    Allora stai sbagliando qualcosa perché a me funziona perfettamente.

    Prova nella finestra Immediate dell'ambiente MS Visual Basic:
    ? DBEngine(0)(0).TableDefs("CONF005b").Fields("ID").Name
  • Re: Function per confrontare i nomi di una tabella con un campo di una form

    Effettivamente funziona, mi faccio un po di prove e vedo di saltarci fuori grazie!
Devi accedere o registrarti per scrivere nel forum
4 risposte