Maschere foglio dati e caselle combinate

di
Anonimizzato12662
il
18 risposte

18 Risposte - Pagina 2

  • Re: Maschere foglio dati e caselle combinate

    Solo per informarti.
    Nella maschera contratti dove ho una sottomaschera dettagli contratti, ho tolto idstampante e riguardando le query come dicevi ho eliminato questo campo che a vederci bene era ridondante, e lo richiamo dalla tabella serialnumber.
    Ho poi tolto tutte le caselle combinate come gia detto , perchè avendo molte stampanti e seriali era complicato usare le caselle combinate, allora ho fatto si che cliccando sul codice stampante mi si apre una nuova maschera a popup e selezione obbligatoria, dove ho due elenchi il primo in alto dove ho tutte le stampanti che posso filtrare ricercandole tramite un campo ricerca, sotto ho tutti i seriali rispettivi alla stampante che seleziono nel elenco delle stampanti
    una volta selezionato stampante e seriale ho dei campi che si aggiornano con i campi selezionati per darmi un resoconto di cosa ho selezionato.

    Private Sub elencostampanti_Click() si trova nel form dove devo selezionare stampanti e seriali FRM_SelezionaSeriali.
    On Error GoTo Err_elencostampanti_Click
    Me.elencostampanti.Requery
    Me.ElencoSeriali.Requery
    Dim rst As DAO.Recordset
    Dim strSearchName As String
    Set rst = Me.RecordsetClone
    rst.Requery
    strSearchName = Me.elencostampanti.Column(0)
    rst.FindFirst "idstampanti= " & strSearchName
    If rst.NoMatch Then
    MsgBox Err.Description
    Else
    Me.Bookmark = rst.Bookmark
    End If
    rst.Close
    Me.elencostampanti.Requery
    Me.ElencoSeriali.Requery
    Exit_elencostampanti_Click:
    Exit Sub
    Err_elencostampanti_Click:
    MsgBox ("Selezionare un valore dall'elenco")
    Resume Exit_elencostampanti_Click
    End Sub

    Poi ho un tasto inserisci che inserisce questi dati nel form sottostante e chiude il form attivo con l'istruzione forms che son riuscito a far funzionare risistemando le query.
    Tutto funziona.
    Private Sub OK_Click()
    If Not IsNull(Me.Idstampanti.Value) Then
    Me.Noleggiata.Value = True
    [Forms]![FRM_Contratti]![FRM_ContrattiDettagli]![idserialnumber].Value = Me![idsn].Value
    DoCmd.Close
    Else
    DoCmd.Close
    End If
    End Sub

    Il problema adesso lo riscontro:
    Esempio se clicco su di una riga gia inserita perché magari voglio cambiare quel seriale con un altro? io ho risolto cosi
    Private Sub idstampante_Click()
    Dim stDocName As String
    If Not IsNull(Me.idserialnumber.Value) Then
    If MsgBox("QUESTA PROCEDURA CANCELLERA TUTTI I DATI DI QUESTO RECORD? .", vbYesNo) = vbYes Then
    Me.Noleggiata.Value = False
    DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
    stDocName = "Frm_SelezioneSeriali"
    DoCmd.OpenForm stDocName, acNormal
    DoCmd.GoToRecord , , acNewRec
    Else
    MsgBox ("Operazione annullata")
    End If
    Else
    stDocName = "Frm_SelezioneSeriali"
    DoCmd.OpenForm stDocName, acNormal
    DoCmd.GoToRecord , , acNewRec
    End If

    End Sub

    Il problema sta che se clicco sul codice stampante da contratto di noleggio, e non faccio niente nel FRM_SelezioneSeriali mi ritrovo Me.Noleggiata.Value =false perciò quando riclicco per inserire per esempio una nuova riga questo seriale gia selezionato prima me lo ritrovo di nuovo nella lista.
    Esempio
    Codice descrizione seriale ecc
    1440 stampante utax 1440 123456789
    1440 stampante utax 1440 123456789
    E questo è un errore perche non sto noleggiando 2 stampanti con lo stesso seriale ma poiche nella query io filtro i valori per noleggiata vero/false semplicemente perche nell’elenco voglio solo le non noleggiate per un fatto di velocità e perché credo sia normale.

    avevo pensato di cancellare la riga ogni volta che apro il nuovo form ma poi non so come intercettare il comando di cancellazione
    DoCmd.DoMenuItem acFormBar, acEditMenu, 6, yes, acMenuVer70
    In modo che non chiede di cliccare su si oppure no ma nasconderlo.

    N.B. che quando dello stesso seriale non sono due stampanti con lo stesso seriale ma la stessa stampante e lo stesso seriale.
    Spero di essere stato chiaro e mi scuso se sono un po confusionario a spiegare le cose.
    Grazie.
    Allegati:
    Inserimento Stampanti e seriali in contratti altro form
    Inserimento Stampanti e seriali in contratti altro form

    inserimento contratto di noleggio
    inserimento contratto di noleggio
  • Re: Maschere foglio dati e caselle combinate

    polling ha scritto:


    avendo molte stampanti e seriali era complicato usare le caselle combinate
    Questo problema si risolverebbe con la nuova struttura che ti ho proposto.
    Non ho capito il significato di SerialNumber, io pensavo fosse quella combinazione di lettere e numeri che si trova su qualsiasi elettrodomestico, il quale mi aspetterei particolarmente univoco per ogni articolo, non ti seguo sulla possibilità che uno stesso SerialNumber possa stare su più stampanti.
    Ritornando alla mia ultima proposta vedrei l'input di SerialNumber manuale (non avrebbe senso neanche la tabella TBL_SerialNumbers), mentre IDStampante con casella combinata così come l'avevi progettata fin dall'inizio.

    Riguardo all'inghippo di avere valori multipli, ti consiglio di considerare di impostare un Indice Multicampo Univoco sui campi:
    Descrizione/Marca (in tabella Stampanti)
    e
    SerialNumber/IDStampante (in tabella Contratti).
    Questo ti impedirebbe di avere valori multipli in una stessa tabella.

    Vorrei dirti che io non so usare il VBA e nemmeno SQL, quindi non ci capisco nulla di tutti quei listoni per me incomprensibili. Tra l'altro, se prima avevi impostato in un modo, è ovvio che i precedenti codici fanno riferimento a oggetti impostati secondo la precedente logica (eventualmente errata) e continuano a darti errori. Io, in casi come questo, essendo ignorante in materia, preferisco costruire tutto da capo. Mi dispiace se non riusciamo a comprenderci a pieno, purtroppo siamo pure in estate e noto una certa carenza di altri utenti in linea...provo a segnalare il tuo caso a utenti più esperti di me.
  • Re: Maschere foglio dati e caselle combinate

    Ok ti ringrazio e sei gentilissimo. Per i Serial Number quello postato è un esempio balordo ma in realta i s/n sono quelli che tu conosci. Io quando intendo 2 seriali uguali non intendo due stampanti con lo stesso seriale. Ma la stessa stampante con lo stesso seriale selezionata 2 volte nel contratto, e questo io non lo voglio. Per il resto non credo di poter fare tutto di da capo visto che sono alla fine del progetto è ho fatto già il 95% credo risolvo questo problema e faccio solo report.
    Aspetto magari altri aiuti intanto cerco io di risolvere e posto magari le soluzioni.
  • Re: Maschere foglio dati e caselle combinate

    polling ha scritto:


    Io quando intendo 2 seriali uguali non intendo due stampanti con lo stesso seriale. Ma la stessa stampante con lo stesso seriale selezionata 2 volte nel contratto, e questo io non lo voglio.
    Intanto ritorno a suggerirti l'utilità di un "Indice Multicampo Univoco" che impedirebbe un input duplicato. Se proprio dovesse accadere per errore, i record possono essere cancellati sia in tabella, sia in maschera, non è la fine del mondo.
Devi accedere o registrarti per scrivere nel forum
18 risposte