+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Programma di inserimento dati

  1. #1
    Simokeane86 non è in linea Novello
    Post
    11

    Cool Programma di inserimento dati

    Salve a tutti,
    Premetto di essere un principiante in VBA.
    Stò sviluppando un programmino in access per cercare,visualizzare,modificare ed inserire dati a scopo lavorativo.

    La mia tabella si chiama globale e contiene i seguenti campi: IP,HOST,LOGON,DOMINIO.

    Vorrei che il programma fosse strutturato con 5 maschere e che fosse possibile passare da una all'altra:
    1° MASCHERA - MENU'
    Contiene 4 pulsanti (ognuno per andare su un'altra delle altre maschere) più un tasto per l'uscita dal programma chiamato USCITA.
    2°MASCHERA - TROVA
    Contiene : 3 textbox chiamate TIP,THOST,TLOGON (dove è possibile mettere i valori da filtrare),un pulsante chiamato CERCA per applicare il filtro e mettere subito la maschera VISUALIZZA in setfocus, un pulsante per tornare al menù chiamato HOME,un pulsante chiamato RESET per azzerare i valori della ricerca,per azzerare i valori della maschera VISUALIZZA e di quella MODIFICA.
    3°MASCHERA - VISUALIZZA
    Contiene : 4 textbox chiamate IP,HOST,LOGON E DOMINIO non accessibili e bloccate che come origine controllo hanno i 4 campi della tabella, un pulsante per tornare al menù chiamato HOME, un tasto per andare alla maschera modifica chiamato MODIFICA
    4° MASCHERA - MODIFICA
    Contiene: 4 textbox chiamate MIP,MHOST,MLOGON E MDOMINIO che contengano gli stessi valori delle textbox di visualizza,ma stavolta accessibili e non bloccate e senza origine controllo, un pulsante per tornare al menù chiamato HOME, un tasto per applicare le modifiche chiamato APPLICA (se i valori delle textbox vengono modificati,ma non si clikka su applica,i nuovi valori non devono essere salvati)
    5° MASCHERA -
    Contenente anche qui le stesse textbox di MODIFICA, ma vuote, un tasto chiamato REGSTRA salvi la voce appena inserita(stesso discorso fatto per il tasto APPLICA),un tasto chiamato MENU' che riconduca alla maschera menù.

    grazie mille per l'aiuto.....

  2. #2
    Luogo
    BS / MI
    Post
    1,608
    Blogs
    33
    Ciao.

    Anzitutto, per essere un principiante , come ti definisci, hai già imbroccato il metodo giusto, facendo un'analisi precisa del problema, ossia disegnando la tua applicazione PRIMA di iniziare a svilupparla. E non è poco, considerando che ci sono parecchi utenti che si definiscono "avanzati", e che partono in tromba a scrivere codice prima di sapere cosa vogliono...

    Da quel che dici si tratta di un semplice DB mono-tabella, perciò le maschere sono quelle che hai descritto, e lo sviluppo successivo non sarà complesso...
    Alla fine che aiuto cerchi esattamente ? Se hai già scritto codice postalo.
    Contattami su FaceBook --> [ ::: MarcoGG su FaceBook ::: ]
    Visita il mio Blog --> [ ::: Il Blog di MarcoGG ::: ]

  3. #3
    Simokeane86 non è in linea Novello
    Post
    11
    io non conosco la programmazione ,ma sono bravo nella gestione....quindi come hai visto ho pensato al modo più funzionale per far girare il programmino.
    cerco un aiuto per generare le routine evento in vba.
    ad esempio: prima avevo iniziato a fare il programma su un unica maschera, e la routine evento sul tasto cerca era la seguente:
    Private Sub Cerca_Click()

    Me.FilterOn = False
    Me.FilterOn = True
    stringa_per_query = ""
    '000
    If IsNull(tip) And IsNull(thost) And IsNull(tlogon) Then
    MsgBox "Inserire almeno un parametro di ricerca"
    Else
    visualizza.SetFocus
    'III
    If Not IsNull(tip) And Not IsNull(thost) And Not IsNull(tlogon) Then
    stringa_per_query = " [ip] like '" & tip.Value & "' " & "and" & "[host] like '" & thost.Value & "'" & "and" & "[logon] like '" & tlogon.Value & "'"
    Else
    'II0
    If Not IsNull(tip) And Not IsNull(thost) And IsNull(tlogon) Then
    stringa_per_query = " [ip] like '" & tip.Value & "' " & "and" & "[host] like '" & thost.Value & "'"
    Else
    'I00
    If Not IsNull(tip) And IsNull(thost) And IsNull(tlogon) Then
    stringa_per_query = "[ip] like '" & tip.Value & "' "
    Else
    '0II
    If IsNull(tip) And Not IsNull(thost) And Not IsNull(tlogon) Then
    stringa_per_query = "[host] like '" & thost.Value & "' " & "and" & "[logon] like '" & tlogon.Value & "'"
    Else
    '00I
    If IsNull(tip) And IsNull(thost) And Not IsNull(tlogon) Then
    stringa_per_query = "[logon] like '" & tlogon.Value & "'"
    Else
    '0I0
    If IsNull(tip) And Not IsNull(thost) And IsNull(tlogon) Then
    stringa_per_query = "[host] like '" & thost.Value & "'"
    Else
    'I0I
    stringa_per_query = "[ip] like '" & tip.Value & "' " & "and" & "[logon] like '" & tlogon.Value & "'"
    End If
    End If
    End If
    End If
    End If
    End If
    Me.Filter = Trim$(stringa_per_query)
    Me.FilterOn = True
    Me.Requery
    If Me.RecordsetClone.RecordCount = 0 Then
    MsgBox "Computer non Presente"
    End If
    End If
    End Sub

    ORA PERO' COME FACCIO A MODIFICARLO PER ADATTARLO AL CASO DI PIUì MASCHERE?

  4. #4
    Luogo
    BS / MI
    Post
    1,608
    Blogs
    33
    Andiamo per ordine :

    1. Dal momento che sei all'inizio di un nuovo progetto, FERMATI un attimo e rifletti.
    Il fatto che tu stia portando una vecchia applicazione su una nuova non implica che tu debba commettere anche gli stessi errori, e le stesse leggerezze.

    2. Nella tabella globale hai elencato 4 campi, ma NON hai detto quale tra questi è PK ( chiave primaria ). Anche se non vi sono relazioni e la tabella è una sola, meglio prevedere sempre una PK.

    3. Restiamo sulla prima maschera : quel codice, anche se funzionante, mi sembra davvero prolisso, eccessivo per lo scopo preposto, e con il sistema della concatenazione delle stringhe sei sempre esposto ad errori. Alla fine devi fare 3 LIKE in AND su 3 TextBox.

    4. Hai pensato invece a creare una Stored Query Parametrica, che puoi gestire con meno codice ?
    Se sei interessato a questo tipo di soluzione, è una cosa che posso spiegarti in breve tempo, ma prima vorrei essere sicuro che non sei una... meteora !

    P.S.: Che tu scriva in Access, in un Forum, o che so io, fatti un favore, e fai un favore a chi ti sta aiutando : usa l'indentazione !
    Quei 6 End If di fila poi, fanno venire il mal di mare... Blearrrrrgh...
    Ultima modifica di MarcoGG; 27-12-2010 14:03 
    Contattami su FaceBook --> [ ::: MarcoGG su FaceBook ::: ]
    Visita il mio Blog --> [ ::: Il Blog di MarcoGG ::: ]

  5. #5
    Simokeane86 non è in linea Novello
    Post
    11

    re

    scusa,avevo dimenticato di dire che il campo HOST è quello indicizzato.
    sulla tabella l'indicizzazione già l'ho messa.
    per quel che riguarda la sostituzione del comando if then sono tutto orecchie,anzi ,se potresti scrivermi la routine evento in vba te ne sarei profondamente grato

  6. #6
    Luogo
    BS / MI
    Post
    1,608
    Blogs
    33
    Quote Originariamente inviato da Simokeane86 Visualizza il messaggio
    scusa,avevo dimenticato di dire che il campo HOST è quello indicizzato.
    sulla tabella l'indicizzazione già l'ho messa.
    per quel che riguarda la sostituzione del comando if then sono tutto orecchie,anzi ,se potresti scrivermi la routine evento in vba te ne sarei profondamente grato
    Scusa, ma campo indicizzato non significa PK.
    Se la risposta ad un tuo quesito, come nel presente caso, prevede anche la scrittura di una Query Sql, dovresti specificare il Tipo dati per ogni campo e magari fare un esempio di valore :

    Io intendevo questo :

    id - contatore - PK [1,2,...]
    IP - testo [192.168.1.1 , 192.168.1.2 , ... ]
    HOST - Testo ?
    LOGON - Testo ?
    DOMINIO - Testo ?

    Indicizzato può essere No, Sì(duplicati ammessi), Sì(duplicati N.A.)...

    Perciò se vuoi che HOST sia la tua PK, non considerare il mio "id", e a questo punto metti la Chiave Primaria a HOST...
    Contattami su FaceBook --> [ ::: MarcoGG su FaceBook ::: ]
    Visita il mio Blog --> [ ::: Il Blog di MarcoGG ::: ]

  7. #7
    pier42 non è in linea Scolaretto
    Post
    56
    ciao
    anch'io non sono un esperto di access, ma perchè non usi la creazione guidata delle maschere, caselle combinate, pulsanti etc.. che diventa tutto più semplice?

  8. #8
    L'avatar di Elimar
    Elimar non è in linea Scribacchino
    Luogo
    Milano
    Post
    672
    Quote Originariamente inviato da Simokeane86 Visualizza il messaggio
    scusa,avevo dimenticato di dire che il campo HOST è quello indicizzato.
    sulla tabella l'indicizzazione già l'ho messa.
    per quel che riguarda la sostituzione del comando if then sono tutto orecchie,anzi ,se potresti scrivermi la routine evento in vba te ne sarei profondamente grato
    Ciao,
    cerca sulla guida in linea di access il select case ...
    Ciao

    Andrea

    Spero di esserti stato di aiuto.

  9. #9
    Luogo
    BS / MI
    Post
    1,608
    Blogs
    33
    Beh, allora a sto punto butto giù la mia soluzione, nella speranza che Simokeane86 si rifaccia vivo !
    Avrei preferito aspettare che mi confermasse struttura Tabella e tipi dei Campi. Per ora prenderò per buona la mia ipotesi.

    Qui di seguito risolvo il passaggio tra la Maschera TROVA e la Maschera VISUALIZZA, con i controlli descritti da Simokeane86.

    Come già detto in precedenza, per gestire il passaggio servono veramente poche righe di VBA, e inoltre grazie all'uso di un'opportuna Query Parametrica, si risolve alla radice ogni possibile problema di errore nell'inserimento da parte dell'utente. Niente a che fare con tutta quella serie di IF, o con la brutale concatenazione di valori e direttive Sql.

    Anzitutto, la Query Parametrica. Ovviamente prende i dati dalla tabella globale.
    La creo in struttura così :



    Un'immagine vale più di mille parole.
    Come si vede, nei criteri di IP, HOST e LOGON, i Parametri fanno riferimento diretto ai controlli sulla Maschera TROVA. Questo accorgimento risparmia in un colpo solo decine e decine di righe VBA.
    Salvo la Query e la nomino "Query_TROVA".

    A questo punto la Maschera TROVA passa in automatico i propri parametri alla Maschera VISUALIZZA.

    --> Maschera TROVA :
    Sulla Maschera TROVA c'è il pulsante "cmd_trova", che applica i criteri dell'utente.
    L'unico codice necessario è per il pulsante :
    codice:
    Private Sub cmd_trova_Click()
    
        DoCmd.OpenForm "VISUALIZZA", acNormal, , , acFormReadOnly
    
    End Sub
    Con acFormReadOnly la rendo di sola lettura, come desiderato.

    --> Maschera VISUALIZZA :
    La Maschera VISUALIZZA può essere creata tranquillamente a partire dalla Tabella globale, con creazione guidata. Al momento del Load(), semplicemente si andrà a ridefinire il suo RecordSource.
    Perciò l'unico codice necessario è questo :
    codice:
    Private Sub Form_Load()
    
        Me.RecordSource = "Query_TROVA"
       
    End Sub
    Query_TROVA è la nostra brava Query Parametrica di cui sopra.

    L'Azione dell'utente perciò è quella prevista :
    Maschera HOME --> TROVA --> VISUALIZZA.

    Quante righe di VBA ho scritto ? --> DUE !
    Contattami su FaceBook --> [ ::: MarcoGG su FaceBook ::: ]
    Visita il mio Blog --> [ ::: Il Blog di MarcoGG ::: ]

+ Rispondi al Thread

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi