Newsgroup: it.comp.lang.visual-basic
Titolo: EMERGENZA !! AIUTO !! EMERGENZA !!!

Ciao ragazzi ho un grandissimo problema anche se sono convinta che sia una
stupidaggine, ora vi spiego
Ho un form con due cmd ( di selezione ), due textbox dentro un frame e un
cmd di registrazione.
Premendo  cmd1 devo visualizzare il frame con le due text, scrivo al loro
interno, volendo posso registrare premendo cmd REGISTRA o posso premere il
cmd2 che mi visualizza nuovamente il frame con le due txt vuote per
scriverci al loro interno, con lo stesso principio del primo cmd .
Successivamente posso rivisualizzare il I° frame con cmd1 che avrà mantenuto
al suo interno i valori delle text se non avevo premuto il pulsante cmd
Registra.
Probabilmente è più complesso capire ciò che ho scritto che non risolvere il
problema !!
Vi scongiuro aiutatemi x' devo risolvere il problema entro domani mattina!!
p.s  Il tutto si fà con gli arrey ? , e come funzionano ?
Dimenticavo!! Ancora una cosa come faccio a visualizzare un report di access
da vb
GRAZIE 1000 MANUELA !!

 Dimenticavo!! Ancora una cosa come faccio a visualizzare un report di
access da vb
  With GetObject(PathName:="C:\TuoPercorso\TuoDB.mdb")
    With .Application
      With .DoCmd
        Call .OpenReport( _
            ReportName:="TuoReport" _
          , View:=2)
        Call .Maximize
      End With
      Let .Visible = True
    End With
  End With
--
Ciao.
Maurizio
--------
?SPQR(C)
 X
--------

 ----------------------------------------------

Avete ragione ragazzi anchio rileggendo il problema non ho capito un gran
che, ed è forse meglio che ricominci da capo .
Io ho una form generale con due pulsanti
premendo pulsante 1 mi richiama un form di nome Pippo che contiene alcune
caselle di text e combo, inoltre questo form ( Pippo) contiene un pulsante
chiamato registra che prende le informazioni delle text e le invia ad db a
patto che nessuna text sia "".
Se invece anche solo una text risulta "" il programma deve tenere in memori
i dati.
Premendo il pulsante due mi visualizza un'altra form chiamata Minnie che è
identica alla form Pippo e anche qui vale lo stesso discorso di prima cioè
con un pulsante Registra deve memorizzare le informazioni delle text in un
db, a patto che nessuna text sia "".
Io ovviamente mi alterno tra le due form premendo i pulsanti, visualizzando
le form precedenti con i dati inseriti se non memorizzati perchè con una
text "".
Quello che ho scritto funziona perchè l' ho fatto, il problema è che io
anzichè due pulsanti ho bisogno di una 20 di pulsanti e ovviamente non posso
visualizzare 20 form identici solo con nome diverso perchè non sono capace a
gestirmi le variabili.
Vi prego aiutatemi perchè questa notte sarà molto dura
Comunque un grosso grazie a Maurizio e a pal.
CIAO MANUELA

 ha scritto

se riesco a darti una mano mi fa piacere. spero solo che maurizio ti dia una
dritta piu' efficace e piu' lucida della mia -- sono un po' fuso :)
dunque, se i form pippo, minni ecc. sono uguali, _forse_ lo risolvi creando
un frmModello che puoi richiamare tutte le volte che ti serve. qui sotto,
per un editor mdi (tipo word97 per intenderci) avevo usato il codice qui
sotto, dopo aver impostato un frmChild come modello, orientandomi poi tra i
form in base alla caption e a un listview che riempivo progressivamente, per
richiamarli in primo piano con un clic. in questo modo ne puoi creare quanti
te ne pare, piu' o meno. i textbox di ogni child manterranno il loro valore
finche non lo scarichi il form
se i vari form aggiungono una scheda alla stessa tabella, non dovresti avere
particolari problemi, ti basta controllare che il codice funzioni sul primo
e anche gli altri _dovrebbero_ andare.
se i form che devi richiamare non sono identici, o se si rifanno a tabelle
diverse, la vedo piu' dura...
ciao, a.
Public Sub Nuovo()
    Dim NewFrm As New frmEdit
'---- questo pezzo conta meno...
    Dim TmpDir
    TmpDir = ParseFDir(frmMain.CDL.FileName)
    NewFrm.Caption = LCase(TmpDir) & NEWDOC & LoadedForms + 1
    'NewFrm.Caption = LCase(TmpDir & App.EXEName) & "_" & LoadedForms + 1
    If NewFile Then
        With frmMain
            .lstLongFiles.AddItem NewFrm.Caption
            .lstLongFiles.Selected(.lstLongFiles.ListCount - 1) = True
        End With
    End If
    NewFrm.chkChanged.Value = 0
    frmMain.Status.Panels(3) = "NEW"
    'NewFrm.Show
'---- ...fino a qui: quindi sono due righe in tutto :)
    Load NewFrm
End Sub

 Quello che ho scritto funziona perchè l' ho fatto, il problema è che io
anzichè due pulsanti ho bisogno di una 20 di pulsanti e ovviamente non posso
visualizzare 20 form identici solo con nome diverso perchè non sono capace a
gestirmi le variabili.
I concetti sono piu` o meno (piu` piu` che meno ;-) quelli espressi da pal
nell'altro suo post. Io intanto ho provato a buttar giu` due righe di codice
e se ci siamo capiti potrebbero anche andar bene. Mancano pezzi ovviamente.
Ma quello che importa e` la struttura della cosa. Se va bene andiamo pure
avanti.
Ti servono due Form: FMain e FData. Su FMain metti Combo1 e Command1,
impostati come precisato nel codice. Fai girare e vedi se ci siamo.
Option Explicit
Private Enum CmdFields
  Form = 0
  RecordSource = 1
  Object = 2
  Count = 3
End Enum
Private Const c_lngFORMSCOUNT As Long = 4
Private m_vntCmds( _
    0 To CmdFields.Count - 1 _
  , 0 To c_lngFORMSCOUNT - 1 _
  ) As Variant
Private Sub Command1_Click( _
)
  Dim i As Long
  With Combo1
    Let i = .ItemData(.ListIndex)
  End With
  If MsgBox( _
      "Stringa SQL:" & vbCrLf _
    & m_vntCmds(CmdFields.RecordSource, i) _
    , vbQuestion + vbOKCancel _
    , "Apri Form: " & m_vntCmds(CmdFields.Form, i) _
    ) = vbOK Then
    Set m_vntCmds(CmdFields.Object, i) = New FData
    With m_vntCmds(CmdFields.Object, i)
      .Caption = m_vntCmds(CmdFields.Form, i)
      .Show
    End With
  End If
End Sub
Private Sub Form_Load( _
)
  Dim i As Long
  InitVars
  Caption = "Main"
  With Combo1
    ' ****************************************************
    ' .Style = VBRUN.ComboBoxConstants.vbComboDropdownList
    ' .Sorted = True
    ' ****************************************************
    For i = 0 To c_lngFORMSCOUNT - 1
      .AddItem m_vntCmds(CmdFields.Form, i)
      .ItemData(.NewIndex) = i
    Next
    .ListIndex = 0
  End With
  Command1.Default = True
End Sub
Private Sub Form_Unload( _
Cancel As Integer _
)
  Dim frm As VB.Form
  Dim i   As Long
  For Each frm In Forms
    If Not (frm Is Me) Then
      Unload frm
    End If
  Next
  For i = LBound(m_vntCmds, 2) To UBound(m_vntCmds, 2)
    Set m_vntCmds(CmdFields.Object, i) = Nothing
  Next
End Sub
Private Sub InitVars( _
)
  Dim i As Long
  i = 0
  m_vntCmds(CmdFields.Form, i) = "Pippo"
  m_vntCmds(CmdFields.RecordSource, i) = ""
  i = 1
  m_vntCmds(CmdFields.Form, i) = "Pluto"
  m_vntCmds(CmdFields.RecordSource, i) = ""
  i = 2
  m_vntCmds(CmdFields.Form, i) = "Paperino"
  m_vntCmds(CmdFields.RecordSource, i) = ""
  i = 3
  m_vntCmds(CmdFields.Form, i) = "Topolino"
  m_vntCmds(CmdFields.RecordSource, i) = ""
End Sub


 che problema c'e' ? la notte e' lunga e noi siamo qui :)
forse tu?
--
Fibia "Sakamoto" FBI
URL: 
www.geocities.com/fibiafbi
E-Mail: 
fibi...@hotmail.com
ICQ UIN 63586057
Membro #25 delle BT Sez. Sud