Newsgroup: it.comp.lang.visual-basic
Titolo: maschera di attesa

Ciao e buon anno a tutti,
come posso fare per aprire una maschera contenente una casella di
testo che invita ad attendere mentre viene eseguita la query e poi si
chiude in automatico mentre appare il report di risultato?
grazie
Marco


Vuoi una risposta tecnica o estetica...?
Tecnicamente, le query se eseguite lato Server sono SINCRONE quindi faresti
solo del cinema...!
Non hai detto che DB e con cosa ti connetti..., se è una Query ACTION oppure
una SELECT...!
ADO nelle queries SELECT(ma non nelle ACTION) se non ricordo male consente
l'uso di Recordset Asincroni con l'ereditarietà di Eventi:
        Private WithEvents Rs   As ADODB.Recordset
DAO invece consente l'esecuzione di Query ASINCRONE solo via ODBC_DIRECT
sull'oggetto Connection definendo dbRunAsync poi StillExecuting per
definirne l'ultimazione ma solo su query ACTION e non per le SELECT se non
ricordo male.
Non sò se ti sono stato d'aiuto ma hai elementi per fare le tue prove.
-- 
@Alex (Alessandro Baraldi)
---------------------------------------------------------------------------
http://www.sitocomune.com/
http://www.alessandrobaraldi.it
---------------------------------------------------------------------------

 Marco
vb 6 o net ?
col 6 faccio qualcosa di simile al codice qui sotto.
c'e' un frmMessage (modale sarebbe meglio, ma dipende dal programma, a volte 
non si puo'), com un cmdClose invisibile (puoi farne a meno).
Private Sub mnuAdminBackup_Click()
    On Error GoTo errman
    If MsgBox("Backup DB?", vbYesNoCancel) <> vbYes Then Exit Sub
    If bViewerOpened Then MsgBox "Chiudere modulo correzioni": Exit Sub
    ' es. frmMessage.lblMessage="attendere, prego..."
    Screen.MousePointer = 11: frmMessage.Show: DoEvents
qui lanci la query
quando ha finito:
    Screen.MousePointer = 0
    frmMessage.cmdClose.Visible = True
    ' o lo scarichi direttamente tu
    exit sub
errman: Screen.MousePointer = 0: MsgBox Error
End Sub
gli adattamenti sono infiniti, e dipendono soprattutto dalla logica del tuo 
programma.
per mostrare la progressione della query, come fa access:
http://www.google.it/search?q=Fetchprogress+&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:it:official&client=firefox-a
hth, a.


ciao,
Vedo di essere più preciso...
ho diversi db inseriti su più PC. Ho creato un file access che prende
una tabella da ogni db (collegate). Ora, visto che le tabelle hanno
gli stessi campi, ho creato una query di unione che mi mette insieme
tutti i dati.
Tramite una maschera con varie caselle combinate, estraggo da questa
query i dati che mi servono. In una di queste form per es estraggo il
reparto di produzione + il mese e l' anno. La query, basata sulla
query di unione è:
SELECT *
FROM Q_UnioneTutteLePostazioni
WHERE (((Q_UnioneTutteLePostazioni.Reparto)="C") AND ((Month([Data
inserimento  controllo]))=12) AND ((Year([Data inserimento
controllo]))=2007));
Poi, sul pulsante di esecuzione della query ho :
....
    DoCmd.OpenQuery "Q_FiltriMeseQualità"
    DoCmd.Close acQuery, "Q_FiltriMeseQualità"
'====================================================================================================================
    'Valuta la categoria selezionata e se in questa non vengono
inseriti controlli avvisa con un messaggio
    If Me.Categoria.Value = "BLUE Solubili" Then
    MsgBox ("Dati Ossigeno non presenti" & vbNewLine & "per questa
categoria"), vbOKOnly, "Attenzione!"
    ElseIf Me.Categoria.Value = "EP Solubili" Then
    MsgBox ("Dati Ossigeno non presenti" & vbNewLine & "per questa
categoria"), vbOKOnly, "Attenzione!"
    Else
    DoCmd.OutputTo acOutputReport, "R_FiltriQualitàMeseOssigeno",
acFormatXLS, "C:\Report mensile ossigeno " & d & ".xls"
    DoCmd.Close acForm, "M_FiltroDatiQualitàMese"
    DoCmd.Close acReport, "R_FiltriQualitàMeseOssigeno"
    DoCmd.OpenForm "M_MENU PRINCIPALE"
....
questa è una parte del codice inserito sul pulsante. L' ultima parte
mi avvisa nel caso che seleziono una categoria in cui so già che non
troverò dati...
quindi, eseguo la query poi creo il report e lo esporto in xls
dandogli già un nome predefinito. Spero che questa parte ti sia di
aiuto per comprendere meglio il tutto.
Grazie

Ciao,
Ho tentato con il tuo metodo ma non mi sembra ciò che vorrei.
Se leggi nel post in cui ho risposto ad alessandro trovi una
descrizione più dettagliata su ciò che sto facendo.
In sostanza, quando clicco sul pulsante, nella barra posta nella parte
inferiore della finestra di access, compare una barra che mi fa vedere
il progredire del lavoro effettuato dalla query. Siccome durante l'
esecuzione di quest' ultima, un click inavvertito può portare al
blocco dell' applicazione, volevo appunto inserire una form nella
quale si prega di attendere la fine del lavoro. Non è necessario
visualizzare nella form l' avanzamento del lavoro ma solo una semplice
scritta che volendo faccio muovere avanti e indietro....
Grazie
Marco

"Marco75"
Ciao,
Ho tentato con il tuo metodo ma non mi sembra ciò che vorrei.
immagino di si'. ho visto dopo che scrivevi "docmd", e access (non gli mdb, 
la sua gui programmabile) resta per me un mondo in cui capisco davvero poco.
ciao, a.


Ok, attenderò altri aiuti.
Ti ringrazio comunque per il tuo interessamento.
Buona serata
Marco