Newsgroup: it.comp.appl.access
Titolo: cambiare rowsource a casella combitata problema con doppi apici

su doppio click di una casella combinata voglio cambiare il rowsource ma non 
riesco a controllare il valore del rouwsource e poi ad assegnare 
correttamente il rowsource nuovo, qualcuno puo aiutarmi?
 
il codice è questo o qualcosa di simile (cosi non funziona)
 
If Me.idallievo.RowSource = "SELECT id, nome" & " " & Cognome & " - " & 
Indirizzo & " " & Comune & " " & cap & " " & "provincia, tessera, BADGE FROM 
allievi ORDER BY nome, cognome;" Then
        Me.idallievo.RowSource = "SELECT id, cognome" & " " & Nome & " - " & 
Indirizzo & " " & Comune & " " & cap & " " & "provincia, tessera, BADGE FROM 
allievi ORDER BY cognome,nome;"
    Else
        Me.idallievo.RowSource = "SELECT id, nome" & " " & Cognome & " - " & 
Indirizzo & " " & Comune & " " & cap & " " & "provincia, tessera, BADGE FROM 
allievi ORDER BY nome, cognome;"
End If
Me.idallievo.Dropdown
 

Il problema sta nei DoppiApici,
 
se tu hai questa STUPIDA stringa: ( dove gli apici INTERNI sono parte della stringa )
SSSS hders " hert " uiwe
 
in VBA la devi racchiudere a sua volta fra DoppiApici e diventa
"SSSS hders " hert " uiwe"
 
ma a questo punto VBA come fa a capire dove comincia e finisce la stringa ????
 
Un modo è sostituire i DoppiApici con SingoliApici
"SSSS hders ' hert ' uiwe"
 
 
quindi il tuo code diventa:
Dim ssq1 As String
ssq1 = "SELECT 
allievi.id
, allievi.Nome & ' ' & allievi.Cognome & ' - ' & allievi.Indirizzo & ' ' & allievi.Comune & ' ' & allievi.Cap & ' ' & allievi.Provincia AS Inx, allievi.Tessera, allievi.BADGE FROM allievi ORDER BY allievi.Nome, allievi.Cognome; "
 
Dim ssq2 As String
ssq2 = "SELECT 
allievi.id
, allievi.Cognome & ' ' & allievi.Nome & ' - ' & allievi.Indirizzo & ' ' & allievi.Comune & ' ' & allievi.Cap & ' ' & allievi.Provincia AS Inx, allievi.Tessera, allievi.BADGE FROM allievi ORDER BY allievi.Cognome, allievi.Nome; "
 
    If Me.idallievo.RowSource = ssq1 Then
        Me.idallievo.RowSource = ssq2
    Else
        Me.idallievo.RowSource = ssq1
    End If
 
Me.idallievo.Dropdown
 
End Sub
 
 
attento allo spazio che ho messo dopo il PuntoEVirgola di termine query
 
in effetti dovresti anche alla apertura maschera impostare il RowSurce a ssq1 con VBA

> ssq1 = "SELECT 
allievi.id
, allievi.Nome & ' ' & a .......
 
Ma perchè mi ha messo 
allievi.id
 come link ????
 

Ma perchè mi ha messo 
allievi.id
 come link ????
 
Non è corretto selezionare il record dal id con colonna nascosta? 
 

Ma perchè mi ha messo 
allievi.id
 come link ????
 
Grazie per le dritte
 

Ma perchè mi ha messo 
allievi.id
 come link ????
 
Sono impostabili da vba la larghezza delle colonne dei campi della casella 
combinata? 0;3;5 ad esempio??
 

 combinata? 0;3;5 ad esempio??
 
Con VBA puoi impostare tutto
 
        Me.idallievo.ColumnWidths = "1134;7804;1701;1701"     
           ' La larghezza delle singole colonne in Pixel
        Me.idallievo.ListWidth = 12907                        
           ' La larghezza dell'elenco complessivo in pixel
 
Tieni presente che 10cm corrispondono a 5670pixel
 
 
NB: Io eviterei di nascondere il campo "idallievo"
potresti metterlo per esempio al 3° posto impostando la 
proprieta "Colonna associata" = 3
 
 

proprieta "Colonna associata" = 3
 
 
perchè eviteresti? secondo me è ideale quel numero non ha senso vederlo ma 
però nella selezione del record ha la sua funzione
ovvero se ho 2 mario rossi e clicco sul secondo mario rossi seleziona 
correttamente il secondo proprio per la presenza del campo id nascosto
perchè devo visualizzarlo in colonna 3? non mi è chiaro
 
grazie per le colonne. 
 

 però nella selezione del record ha la sua funzione
 
Mi sono spiegato male,  scusami
 
Indubbiamente il Id serve per la selezione e DEVI assolutamente usarlo 
ed è corretto metterlo alla 1° colonna della query impostando la sua larghezza a zero per non vederlo.
 
ma ( solo per funzioni estetiche soggettive ) a me piace anche vederlo durante la selezione
quindi lo metto per esempio al 3° posto con la sua larghezza congrua
poi imposto la "ColonnaAssociata" a 3  ( poteva anche essere il 4° posto )
ottengo di:
Registrare nella casella il Id
Visualizzare il Id durante la selezione ( a bandierina aperta )
Visualizzare nella 1° colonna il Cognome
Visualizzare dopo la selezione sempre il Cognome
 
è comunque solo un problema di estetica soggettiva
 
 

è comunque solo un problema di estetica soggettiva
 
Ah ok perfetto, grazie per il chiarimento.