Combobox che elenca due campi di due tabelle distinte

di il
5 risposte

Combobox che elenca due campi di due tabelle distinte

Ciao a tutti, ho bisogno di una dritta.

Dovrei creare una maschera con una casella combinata tramite la quale selezionare un cliente o un fornitore.
Il problema è che la lista dei clienti e dei fornitori sta su due diverse tabelle... ho provato a cercare risposta qui e là prima di aprire il 3d, ma non ho trovato niente.
Come posso fare per risolvere la questione?

Grazie mille!
Mauri

5 Risposte

  • Re: Combobox che elenca due campi di due tabelle distinte

    Perchè non metti nel form davanti all'interlocutore un flegghetto "C" o "F"?
    Con poche righe di codice condizioni l'origine record.
    Per esempio:

    Dim FiltroRecords As String

    If Forms!MioForm!Interlocutore = "C" Then
    FiltroRecords = "SELECT ......."
    End If
    If Forms!MioForm!Interlocutore = "F" Then
    FiltroRecords = "SELECT ......."
    End If

    MioCombo.RowSource = FiltroRecords

    Questa routine magari la esegui su caricamento del form (avendo cura di impostare prima "C" o "F" per default) e poi su uscita campo del flag.

    Se poi il form gestisce dei campi di un recod memorizzati in una tabella, consiglierei di gestire come campo della tabella anche il flegghetto altrimenti si ricade in casi di ambiguità e comunque non è più gestibile.
  • Re: Combobox che elenca due campi di due tabelle distinte

    La risposta non la puoi trovare visto che alla base credo ci sia un'errore strutturale.
    Poi si possono accrocchiare soluzioni "Basta che funzioni" sulle quali io non entro nel merito.

    Fossi in te mi chiederei del perchè una Tabella Anagrafica deve essere divisa in 2...

    Se tu avessi avuto, come è NORMALE che sia, una sola tabella, l'autocomposizione di Access
    ti avrebbe dato la possibilità di realizzare la selezione con il Wizzard senza scrivere 1 riga di codice.
  • Re: Combobox che elenca due campi di due tabelle distinte

    Hai ragione Alex, però il programma me l'hanno fornito così, quindi mi devo riuscire ad accontentare di una soluzione alla buona!
  • Re: Combobox che elenca due campi di due tabelle distinte

    AntonioF ha scritto:


    Perchè non metti nel form davanti all'interlocutore un flegghetto "C" o "F"?
    Con poche righe di codice condizioni l'origine record.
    Per esempio:

    Dim FiltroRecords As String

    If Forms!MioForm!Interlocutore = "C" Then
    FiltroRecords = "SELECT ......."
    End If
    If Forms!MioForm!Interlocutore = "F" Then
    FiltroRecords = "SELECT ......."
    End If

    MioCombo.RowSource = FiltroRecords

    Questa routine magari la esegui su caricamento del form (avendo cura di impostare prima "C" o "F" per default) e poi su uscita campo del flag.

    Se poi il form gestisce dei campi di un recod memorizzati in una tabella, consiglierei di gestire come campo della tabella anche il flegghetto altrimenti si ricade in casi di ambiguità e comunque non è più gestibile.
    Grazie mille! provo così!
  • Re: Combobox che elenca due campi di due tabelle distinte

    Alla fine ho deciso di lasciare due combo, ciascuna per tabella...
    In pratica ho sia la combo "clienti" che la combo "fornitori".
    Ho messo un codice che, su aggiornamento, mette "null" rispettivamente l'altra combo...così sono sicuro che non può esistere un record con entrambi i valori.

    Infine mi è anche più comodo così, perchè mi balzano subito all'occhio i record dei fornitori e quelli dei clienti (è un elenco dei DDT in entrata).

    Ok non è una cosa molto "ordotossa" ma ho già testato che è abbastanza funzionale.

    Adesso ho quasi finito di fare anche i DDT in uscita! Il problema si è ripresentato ma lo risolto nella medesima maniera!

    Nel report del DDT, invece, ho utilizzato la funzione iif

    Comunque Alex hai pienamente ragione, un db va prima pienamente pianificato, studiato e normalizzato!
    Ti ringrazio dei link che hai messo in altri 3d, in cui ci sono le spiegazioni per la creazione dei db e delle forme normalizzate!

    Ciao a tutti e grazie!

    PS: ho modificato il tutto lasciando i due campi non visibili e mettendo una casella di testo con un comando iif che controlla quale dei due valori e null in modo da non sprecare spazio inutilmente!
Devi accedere o registrarti per scrivere nel forum
5 risposte