Newsgroup: it.comp.appl.access
Titolo: ComboBox problema nel cambio FieldType nel RowSource

Sottopongo una strana anomalia in cui sono incappato, e magari qualcuno già aveva avuto modo di notarla oppure ha qualche idea....
 
SCENARIO:
Tab[T1] con 2 Campi
Citta  --->Testo
Attiva --->Si/No
 
Maschera [Form1] NON ASSOCIATA
2 ComboBox NON ASSOCIATE
 
1° Combo [cboField] RowSource="T1" e RowSourceType="Elenco campi"
2° Combo [cboValue] RowSource="" e RowSourceType="Tabella/query"
 
Su AfterUpdate della [cboField]:
Private Sub cboField_AfterUpdate()
    Me.cboValue.RowSource = "SELECT DISTINCT " & Me.cboField & " FROM T1"
End Sub
 
Nella sostanza con la 1° Combo seleziono il CAMPO(Citta o Attiva] e nella 2° Combo
ho l'elenco dei Valori univoci.
 
Ora faccio 2 Test:
PRIMO TEST
Apro la Maschera e seleziono nella [cboField] il Campo [Attiva], tipo Bolano, e nella combo 2 mi appare "Si/No", poi modifico la [cboField] selezionando [Citta] e seleziono una Città...
Ottengo ERRORE 2113
"E' stato seleionato un Valore non valido per il campo..."
 
SECONDO TEST
Chiudo la Form e riapro... e faccio il contrario.
Seleziono [Citta] ed una Città... poi modifico il Campo con [Attiva] ed un valore..., tutto ok, quindi senza chiudere torno a selezionare [Citta] per verificare e NESSUN ERRORE...
 
Pare che la selezione come primo campo Boolean in qualche modo lasci qualche traccia.
Dopo vari test, ho capito che, se il primo campo selezionato è di tipo TESTO non ci sarà alcun problema nelle successive modifiche... mentre se la PRIMA Selezione è di un Campo NUMERICO/DATA/BOOLEAN al successivo cambio con un CAMPO di tipo TESTO mi restituirà sempre l'errore...
 
Siccome la situazione è estremamente BANALE fatico a capire ma soprattutto a capire se c'è qualche cosa che mi sfugge...
 
La soluzione "Stupida è forzare alla partenza un campo Testo"... ed effettivamente funziona... ma purtroppo non posso seguirla...
 
Qualcuno ha incontrato questo problema...?
 
Grazie
@Alex

Ho scoperto di non essere il primo ad aver individuato questa anomalia:
 
https://www.tek-tips.com/viewthread.cfm?qid=849845
 
 
Fatico a capire la spiegazione tecnica, sensata ma mi pare più un possibile Bug...
La soluzione trovata è una PEZZA abbastanza oscena...
 
@Alex

La soluzione proposta di convertire in Testo forzando il FIELDTYPE con TRIM non è una buona idea, in caso di presenza di Format per Date genera problemi.
 
Ad oggi non ho trovato una soluzione intelligente, ma qualche cosa che aiuta a non generare il problema...
 
Imposto il BoundColumn=0 prima di impostare il RowSource e poi lo ripristino.
 
Private Sub cboField_AfterUpdate()
    Me.cboValue.BoundColumn = 0
    Me.cboValue = Null
    Me.cboValue.RowSource = "SELECT DISTINCT " & Me.cboField & " FROM Impiegati ORDER BY " & Me.cboField
    Me.cboValue.BoundColumn = 1
End Sub
 
La cosa funziona ma non è perfetta, soprattutto se inserita in una gestione di compilazione valori da codice...
 
Se qualcuno trovasse una soluzione più tecnica a quello che a mio avviso è un BUG... benvenga.
 
@Alex

 
Dire che si potrebbe risolvere semplicemente così:
 
Private Sub cboField_AfterUpdate()
    Me.cboValue = Null
    Me.cboValue.RowSource = "SELECT DISTINCT " & Me.cboField & " FROM T1"
End Sub

No purtroppo ... 
 
@Alex

Al seguente link:
https://www.dropbox.com/s/xnimgt8vs0cse8l/db1.mdb?dl=0
 
puoi vedere l'esempio che a me funziona. 


Da me non funziona... come di dicevo, non ho modo di contestare... ma deve funzionare da me... ;-)
 
A maggior chiarezza potesse dipendere da Office:
OFFICE 365 ACCESS 365 WIN10 32Bit
 
Come da 1° POST, segui questa sequenza:
1° APRI la form selezioni ATTIVA dalla 1° COMBO non serve selezionare un valore
2° SELEZIONI CITTA' e poi un valore "Firenze" ottieni errore
 
Chiudi la Form e la riapri
1° SELEZIONI CITTA senza un valore 
2° SELEZIONI ATTIVA con valore 
3° SELEZIONI CITTA' con valore
Tutto OK
 
Ti accorgi subito del problema osservando, dopo la selezione l'allineamento dei valori dopo la selezione della 2° COMBO... a DX per i Numeri e SX per il TESTO.
 
Se segui questa procedura a me da il problema SEMMPRE.
Se inserisco la mia "pezza" no...
 
Grazie per il test
@Alex