Newsgroup: it.comp.appl.access
Titolo: Modifica Dinamica Origine Dati di una Maschera

 
          Ho la necessità di aprire delle tabelle dentro una maschera in maniera da
poter intercettare l’evento di chiusura. Ora, però, dovendo farlo per
svariate tabelle (con strutture differenti), non vorrei dover creare una
maschera per ogni tabella del DB, ma vorrei una sola maschera alla quale, in
apertura, passare la tabella di origine. Il problema sta nei campi
visualizzati: se cambio il valore di RecordSource, la maschera cambia la
propria origine dati, ma poi visualizza solo i campi che hanno lo stesso
nome della origine dati precedente. Allora avevo pensato ad una routine che,
in apertura, creasse una TextBox per ogni campo della tabella (poi mi basta
vederla in modalità FoglioDati) in maniera da vedere sempre tutto
correttamente, però su it.comp.visual-basic ho trovato solo procedure che
presuppongono l’uso di VB6, usando controlli non presenti sul VBA. Qualcuno
di voi ha risolto questo problema?
Grazie!
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 wrote in message
news:213Z230Z129Z21Y...@usenet.libero.it

Access non supporta la creazione RUNTIME dei controlli, sei
costretto a passare per il Design mode.
A quel punto puoi fare quello che vuoi.
Aprendo la Form ne prelevi il Recordset e cicli la Collection
Fields creando un Controllo di tipo TextBox per ogni Field.
Se poi dici di voler usare la visualizzazione foglio dati 
la cosa è assolutamente banale poichè non devi nemmeno
posizionarli.
Ricorda però, prima di creare i controlli di cancellare tutti
quelli vecchi.
Non puoi creare un controllo assegnandogli il Nome, ma
devi modificarglielo dopopo averlo creato.
Saluti
@Alex
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 devi modificarglielo dopopo averlo creato.
Anche qui, prima creo, poi ci penserò... Ma la proprietà Name non è
ReadOnly?
Grazie ancora, ciao.


 

Mai sentito parlare dell'Help...?
 
Ti butto giù 2 righe stupide, ma credo siano sufficienti.
   dim fld as DAO.Field
   DoCmd.OpenForm "NOME_MASCHERA", acDesign
   For each fld in Me.Recordset.Fields  
         Set ctl = CreateControl("NOME_MASCHERA", acTextBox,
ctlposition, "", "", , , 100, 100)
         DoCmd.Restore
         With ctl
            .Name = fld
            .FontName = "MS Sans Serif"
            .FontSize = 8
         End With
   next
   DoCmd.Close acForm, "NOME_MASCHERA", acSaveYes
Ovviamente prima cancellali tutti...!!!
Ciao



Mah, senz'altro puoi passare per la modalità Design come ti consiglia
Alessandro ... però è una soluzione che presenta inconvenienti (tra cui
l'impossibilità di creare l'.MDE).
Il metodo più semplice è predisporre nella SubForm Foglio dati da
parametrizzare N caselle di testo UnBound (con N=al numero massimo di campi
nelle tabelle che devi associare, meno di 255 comunque).
I nomi andranno indexati:     txtCampo1 .... txtCampoN     per esempio.
Quando viene modificato il recordsource della sottomaschera, apri un
recordset basato sulla stringa SQL in oggetto, cicli l'insieme Fields e crei
l'associazione con le caselle di testo UnBound.
una cosa del tipo:
Dim Rst As Recordset, i As Integer
  Set Rst = CurrentDb.OpenRecordset("TuaTabella")
  For i = 0 To Rst.Fields.Count - 1
        Me!TuaSubForm.Form.Controls("txtCampo" & i).ControlSource =
Rst.Fields(i).Name
  Next i
  Rst.Close
  Set Rst = Nothing

 l'impossibilità di creare l'.MDE).
Grazie ad entrambi! Ho sperimentato con successo il suggerimento di
Alessandro. Proverò anche il tuo....
Ciao e ancora grazie!
