Discussione:
Aprire una maschera e dare a combobox valore casella subform
(troppo vecchio per rispondere)
r4gtl
2007-06-07 14:48:00 UTC
Permalink
Ciao a tutti.
Ho una subform bloccata in visualizzazione foglio dati. Tramite un pulsante
apro una maschera che si posiziona esattamente sul record selezionato nella
subform. Fin qui tutto ok. Il problema sorge con una combobox della maschera
aperta (che chiamo maschera di modifica). Ho bisogno che riporti un elenco
della stessa tabella di prodotti della subform di origine. Questo l'ho
risolto, solo che quando apro la maschera di modifica tutti i campi sono
correttamente compilati con il record selezionato nella subform di origine a
parte la combobox che è vuota.
Riporto il codice vba da me compilato:

Private Sub Comando12_Click()
On Error GoTo Err_Comando12_Click

Dim stDocName As String
Dim stLinkCriteria As String
Dim strSQL As String
Dim StrProdotto As String

strSQL = "SELECT ProdottiChimici.IDProdotto,
ProdottiChimici.IDFornitorePC, ProdottiChimici.Descrizione " & _
"FROM ProdottiChimici " & _
"WHERE (((ProdottiChimici.IDFornitorePC) =
[Forms]![M_AcquistiProdottiChimici]![IDFornitorePC])) " & _
"ORDER BY ProdottiChimici.Descrizione;"




StrProdotto = Me!Dettaglio!IDProdotto

stDocName = "DettaglioAcquisti"

stLinkCriteria = "[IDDettaglio]=" & Me!Dettaglio![IDDettaglio]
DoCmd.OpenForm stDocName, , , stLinkCriteria
Forms!DettaglioAcquisti!IDProdotto.RowSource = strSQL

Forms!DettaglioAcquisti!IDProdotto.Requery
'Ho provato ad aggiungere anche questo
Forms!DettaglioAcquisti!IDProdotto = StrProdotto


Exit_Comando12_Click:
Exit Sub

Err_Comando12_Click:
MsgBox Err.Description
Resume Exit_Comando12_Click

End Sub


Qualcuno sa dirmi dove sbaglio?

Grazie
Ciao
Stefano
Sergio MAZZA
2007-06-07 16:52:56 UTC
Permalink
Post by r4gtl
Ciao a tutti.
Ho una subform bloccata in visualizzazione foglio dati. Tramite un pulsante
apro una maschera che si posiziona esattamente sul record selezionato nella
subform. Fin qui tutto ok. Il problema sorge con una combobox della maschera
aperta (che chiamo maschera di modifica). Ho bisogno che riporti un elenco
della stessa tabella di prodotti della subform di origine. Questo l'ho
risolto, solo che quando apro la maschera di modifica tutti i campi sono
correttamente compilati con il record selezionato nella subform di origine a
parte la combobox che è vuota.
Private Sub Comando12_Click()
On Error GoTo Err_Comando12_Click
Dim stDocName As String
Dim stLinkCriteria As String
Dim strSQL As String
Dim StrProdotto As String
strSQL = "SELECT ProdottiChimici.IDProdotto,
ProdottiChimici.IDFornitorePC, ProdottiChimici.Descrizione " & _
"FROM ProdottiChimici " & _
"WHERE (((ProdottiChimici.IDFornitorePC) =
[Forms]![M_AcquistiProdottiChimici]![IDFornitorePC])) " & _
"ORDER BY ProdottiChimici.Descrizione;"
StrProdotto = Me!Dettaglio!IDProdotto
stDocName = "DettaglioAcquisti"
stLinkCriteria = "[IDDettaglio]=" & Me!Dettaglio![IDDettaglio]
DoCmd.OpenForm stDocName, , , stLinkCriteria
Forms!DettaglioAcquisti!IDProdotto.RowSource = strSQL
Forms!DettaglioAcquisti!IDProdotto.Requery
'Ho provato ad aggiungere anche questo
Forms!DettaglioAcquisti!IDProdotto = StrProdotto
Exit Sub
MsgBox Err.Description
Resume Exit_Comando12_Click
End Sub
Qualcuno sa dirmi dove sbaglio?
Grazie
Ciao
Stefano
La casella combinata è associata?

Ciao.
--
Sergio MAZZA
r4gtl
2007-06-08 06:42:12 UTC
Permalink
Post by Sergio MAZZA
Post by r4gtl
Ciao a tutti.
Ho una subform bloccata in visualizzazione foglio dati. Tramite un pulsante
apro una maschera che si posiziona esattamente sul record selezionato nella
subform. Fin qui tutto ok. Il problema sorge con una combobox della maschera
aperta (che chiamo maschera di modifica). Ho bisogno che riporti un elenco
della stessa tabella di prodotti della subform di origine. Questo l'ho
risolto, solo che quando apro la maschera di modifica tutti i campi sono
correttamente compilati con il record selezionato nella subform di origine a
parte la combobox che è vuota.
Private Sub Comando12_Click()
On Error GoTo Err_Comando12_Click
Dim stDocName As String
Dim stLinkCriteria As String
Dim strSQL As String
Dim StrProdotto As String
strSQL = "SELECT ProdottiChimici.IDProdotto,
ProdottiChimici.IDFornitorePC, ProdottiChimici.Descrizione " & _
"FROM ProdottiChimici " & _
"WHERE (((ProdottiChimici.IDFornitorePC) =
[Forms]![M_AcquistiProdottiChimici]![IDFornitorePC])) " & _
"ORDER BY ProdottiChimici.Descrizione;"
StrProdotto = Me!Dettaglio!IDProdotto
stDocName = "DettaglioAcquisti"
stLinkCriteria = "[IDDettaglio]=" & Me!Dettaglio![IDDettaglio]
DoCmd.OpenForm stDocName, , , stLinkCriteria
Forms!DettaglioAcquisti!IDProdotto.RowSource = strSQL
Forms!DettaglioAcquisti!IDProdotto.Requery
'Ho provato ad aggiungere anche questo
Forms!DettaglioAcquisti!IDProdotto = StrProdotto
Exit Sub
MsgBox Err.Description
Resume Exit_Comando12_Click
End Sub
Qualcuno sa dirmi dove sbaglio?
Grazie
Ciao
Stefano
La casella combinata è associata?
Ciao.
--
Sergio MAZZA
Ho provato sia associandola che non associandola ma il risultato non cambia.
Probabilmente occorre cambiare qualcosa nel codice in base al fatto che sia
associata o meno. L'elenco della casella combinata lo riempie in qualsiasi
caso ma non riesco a fare in modo che venga compilata per default con il nome
del prodotto presente nella maschera di origine. La casella combinata è
composta da tre colonne come quella della subform di origine.

ciao
Stefano
Sergio MAZZA
2007-06-08 08:10:28 UTC
Permalink
Post by r4gtl
Ho provato sia associandola che non associandola ma il risultato non cambia.
Probabilmente occorre cambiare qualcosa nel codice in base al fatto che sia
associata o meno. L'elenco della casella combinata lo riempie in qualsiasi
caso ma non riesco a fare in modo che venga compilata per default con il nome
del prodotto presente nella maschera di origine. La casella combinata è
composta da tre colonne come quella della subform di origine.
ciao
Stefano
Se l'ordine delle colonne è lo stesso non dovresti avere problemi con:
forms!nomeForm!nomeCasellaCombinata = me!nomeCasellaCombinata

Poi non capisco perché se i dati sono gli stessi della subForm, solo che li
modifichi in un'altra maschera, perchè riassegni alla casella combinata il
rowsource?

O ho capito male?

Ciao.
--
Sergio MAZZA
r4gtl
2007-06-08 12:39:02 UTC
Permalink
Post by Sergio MAZZA
Post by r4gtl
Ho provato sia associandola che non associandola ma il risultato non cambia.
Probabilmente occorre cambiare qualcosa nel codice in base al fatto che sia
associata o meno. L'elenco della casella combinata lo riempie in qualsiasi
caso ma non riesco a fare in modo che venga compilata per default con il nome
del prodotto presente nella maschera di origine. La casella combinata è
composta da tre colonne come quella della subform di origine.
ciao
Stefano
forms!nomeForm!nomeCasellaCombinata = me!nomeCasellaCombinata
Poi non capisco perché se i dati sono gli stessi della subForm, solo che li
modifichi in un'altra maschera, perchè riassegni alla casella combinata il
rowsource?
O ho capito male?
Ciao.
--
Sergio MAZZA
C'è qualcosa che non quadra. Ho eliminato la maschera di modifica. Ho
provato a dare la stessa rowsource alla casella combinata nella
sottomaschera. Questo per fare in modo che nella casella combinata compaiano
solo i prodotti di quel fornitore lì. Bene. L'elenco è a posto solo che non
compaiono più i prodotti che dovrebbero esserci. Nel senso che la subform che
deve andare a prendere i dati dalla tabella "DettaglioAcquisti". Preleva
tutto tranne che il nome del prodotto. Se io tolgo la rowsource, ricompare
tutto il record completo ma la casella combinata riporta i prodotti di tutti
i fornitori.
Devo fare una query e associare la sottomaschera ad essa? e come faccio poi
a salvare i dati nella tabella "DettaglioAcquisti"?
Sergio MAZZA
2007-06-09 06:35:10 UTC
Permalink
Post by r4gtl
C'è qualcosa che non quadra. Ho eliminato la maschera di modifica. Ho
provato a dare la stessa rowsource alla casella combinata nella
sottomaschera. Questo per fare in modo che nella casella combinata compaiano
solo i prodotti di quel fornitore lì. Bene. L'elenco è a posto solo che non
compaiono più i prodotti che dovrebbero esserci. Nel senso che la subform che
deve andare a prendere i dati dalla tabella "DettaglioAcquisti". Preleva
tutto tranne che il nome del prodotto. Se io tolgo la rowsource, ricompare
tutto il record completo ma la casella combinata riporta i prodotti di tutti
i fornitori.
Devo fare una query e associare la sottomaschera ad essa? e come faccio poi
a salvare i dati nella tabella "DettaglioAcquisti"?
Ma questo meccanismo tu lo vuoi fare per modificare i dati che sono visibli (filtrati e bloccati) sulla maschera+sottomaschera?

Ciao.
--
Sergio MAZZA
r4gtl
2007-06-11 08:12:00 UTC
Permalink
Post by Sergio MAZZA
Post by r4gtl
C'è qualcosa che non quadra. Ho eliminato la maschera di modifica. Ho
provato a dare la stessa rowsource alla casella combinata nella
sottomaschera. Questo per fare in modo che nella casella combinata compaiano
solo i prodotti di quel fornitore lì. Bene. L'elenco è a posto solo che non
compaiono più i prodotti che dovrebbero esserci. Nel senso che la subform che
deve andare a prendere i dati dalla tabella "DettaglioAcquisti". Preleva
tutto tranne che il nome del prodotto. Se io tolgo la rowsource, ricompare
tutto il record completo ma la casella combinata riporta i prodotti di tutti
i fornitori.
Devo fare una query e associare la sottomaschera ad essa? e come faccio poi
a salvare i dati nella tabella "DettaglioAcquisti"?
Ma questo meccanismo tu lo vuoi fare per modificare i dati che sono visibli (filtrati e bloccati) sulla maschera+sottomaschera?
Ciao.
--
Sergio MAZZA
Proprio così. Ovviamente non credo sia il sistema migliore ma è l'unico che
mi viene in mente anche guardando i gestionali che già ci sono in ufficio
elaborati con altri linguaggi. Cercare di uniformare il più possibile il mio
programma a quelli già presenti mi sembra che sia una buona cosa per gli
utenti finali che saranno i colleghi.

Ciao

Stefano
Sergio MAZZA
2007-06-11 08:44:02 UTC
Permalink
Post by r4gtl
Proprio così. Ovviamente non credo sia il sistema migliore ma è l'unico che
mi viene in mente anche guardando i gestionali che già ci sono in ufficio
elaborati con altri linguaggi. Cercare di uniformare il più possibile il mio
programma a quelli già presenti mi sembra che sia una buona cosa per gli
utenti finali che saranno i colleghi.
Ma basterebbe copiare la stessa sottomaschera e richiamarla passandogli l'id
del record:
'---
Docmd.Openform "nomeform",,,"id=" & me!id
'---

Poi in chiusura dovrai fare un requery della maschera dove hai chiamato
quella per la modifica:
Forms!nomeForm!nomeSubForm.Form.Requery
Post by r4gtl
Ciao
Stefano
Ciao.
--
Sergio MAZZA
Loading...