Come si può fare il Refresh, con un comando, di un Frame (e quindi del suo contenuto) presente in un altro form??
ho provato con:
però non sortisce alcun effettocodice:Form1.Frame1.Refresh![]()
Come si può fare il Refresh, con un comando, di un Frame (e quindi del suo contenuto) presente in un altro form??
ho provato con:
però non sortisce alcun effettocodice:Form1.Frame1.Refresh![]()
Ciao..innanzitutto chiariscimi il "tuo" concetto di Refresh: questo non per insinuare che non lo sai ma per esperienza personale ti posso dire che molte volte sul forum ci sono stati fraintendimenti proprio per differenze di concetti apparentemente banali..
ciao
già scusa.
Allora, il progetto è così composto:
l'utente avvia il programma, gli appare il Form1 (il quale ha delle textbox associate ad una Tabella2 di un DataBase1 (tabella vuota)). Cliccando su un comando gli apre un secondo Form (però mantenendo sempre attivo il primo).
In questo secondo Form l'utente ha la possibilità di inserire nuovi dati all'interno della tabella1 del database1 o di selezionare già i presenti. una volta selezionati i presenti, cliccando su un comando salva i record selezionati su una Tabella2, chiude il Form2 e ritorna al Form1.
quello che interessa a me è che al ritornare al Form1 si aggionino le textbox associate al database1 con i dati presenti alla Taballa2.
tutto qui.
ossia una specie di reload del frame...ma senza che mi chiuda e riapra tutto il Form1...
se mi sono spiegato male faccio degli screenshot per spiegare meglio...
per queste esigenze, io generalmente procedo in questo modo:
realizzo una routine che "inizializza" il form, e la rendo pubblica nel Form che la utilizza preminentemente, o se possibile, Public in un Modulo con un argomento che permette di specificare il form chiamante.
dopo di che, nell'evento Load del form che richiede l'inizializzazione chiamo semplicemente la routine precedente.
in questo modo, la routine può essere chiamata in qualsiasi momento per aggiornare la visualizzazione del form e soprattutto, badando al tuo caso, da qualsiasi form tu voglia.
se la metti nel form che la utilizza chiamerai
Form1.Inizializza
altrimenti se è pubblica nel modulo ma con il riferimento al Form:
Inizializza (Form1)
Boolean
Ho provato, ma mi sa che ho sbagliato qualcosa...
con "inizializza" cosa intendi di preciso?
riesci a scrivere un codice d'esempio?
non posso scriverti un codice d'esempio... per il semplice fatto che non ho idea di cosa tu faccia nell'evento load de tuo form!
ti faccio un esempio...
apri il form e nell'evento load cancelli tutti i textbox presenti...
se ad un certo momento dovessi avere la necessità di cancellare i textbox come fai? chiudi e riapri il form? o ri scrivi le righe di cancellazione di nuovo?!
nulla di tutto questo...
ti crei una routine, ad esempio "CancellaTextBox" che faccia quello che ti serve... e la richiami ogni volta che ne hai la neessità... evento Load compreso...
Boolean
ok, capito...già lo faccio un passaggio simile.
Ora però, vediamo, è un po' come LeggiDalDb...ossia gli faccio leggere i dati dal database:
Nel FORM1:
Nel FORM2:codice:Public Sub LeggiDalDb() txtSocietà = rs.Fields(0) txtCognome = rs.Fields(1) txtNome = rs.Fields(2) txtVia = rs.Fields(3) txtNumero = rs.Fields(4) txtCap = rs.Fields(5) txtCittà = rs.Fields(6) txtProvincia = rs.Fields(7) txtStato = rs.Fields(8) End Sub
form1.LeggiDalDb
giusto?
però così non funzia...
Se era giusto funzionava..apparte gli scherzi la chiamata alla funzione va bene: dove sono ubicate queste textbox? Cioè in quale form?Originariamente inviato da Folcus
ok, capito...già lo faccio un passaggio simile.
Ora però, vediamo, è un po' come LeggiDalDb...ossia gli faccio leggere i dati dal database:
Nel FORM1:
Nel FORM2:codice:Public Sub LeggiDalDb() txtSocietà = rs.Fields(0) txtCognome = rs.Fields(1) txtNome = rs.Fields(2) txtVia = rs.Fields(3) txtNumero = rs.Fields(4) txtCap = rs.Fields(5) txtCittà = rs.Fields(6) txtProvincia = rs.Fields(7) txtStato = rs.Fields(8) End Sub
form1.LeggiDalDb
giusto?
però così non funzia...
sono ubicate nel form1...ma la cosa strana mi da errore con il sub del public...devo forse mettere un qualche parametro?
in questa routine non vedo nessun riferimento al form1... e probabilmente è qui l'errore...codice:Public Sub LeggiDalDb() txtSocietà = rs.Fields(0) txtCognome = rs.Fields(1) txtNome = rs.Fields(2) txtVia = rs.Fields(3) txtNumero = rs.Fields(4) txtCap = rs.Fields(5) txtCittà = rs.Fields(6) txtProvincia = rs.Fields(7) txtStato = rs.Fields(8) End Sub
dico probabilmente perchè, diligentemente, hai "dimenticato" di dire numero e descrizione dell'errore...![]()
per risolvere hai 2 strade... o poni un riferimento dinamico, nel caso tu voglia utilizzare questa routine anche in altri forms, dove sono presenti gli stessi textbox, o indichi contestualmente ai nomi dei controlli, il nome del form "padre":
quindi o così (riferimento dinamico):
o "statico":codice:Public Sub LeggiDalDb(Where As Form) With Where .txtSocietà = rs.Fields(0) .txtCognome = rs.Fields(1) .txtNome = rs.Fields(2) .txtVia = rs.Fields(3) .txtNumero = rs.Fields(4) .txtCap = rs.Fields(5) .txtCittà = rs.Fields(6) .txtProvincia = rs.Fields(7) .txtStato = rs.Fields(8) End With End Sub
in pratica cambia poco...codice:Public Sub LeggiDalDb() With Form1 .txtSocietà = rs.Fields(0) .txtCognome = rs.Fields(1) .txtNome = rs.Fields(2) .txtVia = rs.Fields(3) .txtNumero = rs.Fields(4) .txtCap = rs.Fields(5) .txtCittà = rs.Fields(6) .txtProvincia = rs.Fields(7) .txtStato = rs.Fields(8) End With End Sub
resta da vedere, però, se anche la visibilità del Recordset è quella del Form1... in tal caso devi specificare anche la "paternità" di rs
Boolean