Buongiorno a tutti.
Sto ultimando un database che fungerà da gestionale per lo studio veterinario presso il quale lavoro.
Il progetto è in fase avanzata di sviluppo e ho incominciato a popolare la tabelle con i dati che serviranno al suo funzionamento.
Ho cominciato a notare alcuni problemi di cui vorrei discutere con voi e magari riuscire a trovare soluzioni alternative a quelle che ho scelto io.
Il problema maggiore lo riscontro in una maschera che serve all'immissione di dati per la preparazione del conto da presentare al cliente. Nella maschera l'utente deve scegliere il cliente (il proprietario dell'animale portato in visita), il paziente (l'animale, che può essere uno o più di uno visto che capita sovente che i proprietari portino diversi animali in visita) e i vari prodotti e prestazioni che eroghiamo al paziente.
Le relative tabelle contengono numerosi record. Una volta immessi tutti i clienti, arriveranno probabilmente nell'ordine del migliaio. I prodotti e prestazioni sono sicuramente più numerosi, in quanto (a differenza di ciò che avviene in Italia), in Svizzera, dove risiedo, i veterinari vendono direttamente medicinali e cibo. Quindi il nostro catalogo è molto ampio.
Al momento attuale sto gestendo l'immissione dei dati in maschera attraverso combobox. Quindi una combobox per la scelta del cliente, una per la scelta del paziente ed una per la scelta del prodotto/prestazione.
Ad alcune di queste ho associato all'evento "su modifica" del codice, come questo:
Private Sub cboIDProdotto1_Change()
Application.Echo False
Dim strR As String
Dim strsql As String
Me!cboIDProdotto1.SetFocus
strR = Me!cboIDProdotto1.Text
If Not IsNull(Me!cboIDProdotto1.Text) Then
strsql = "SELECT tabProdotti.IDProdotto, tabProdotti.Descrizione" & _
" FROM tabProdotti" & _
" WHERE (tabProdotti.Descrizione LIKE " & Chr$(34) & "*" & strR & "*" & Chr$(34) & ")" & _
" ORDER BY tabProdotti.Descrizione; "
Me!cboIDProdotto1.RowSource = strsql
Me.cboIDProdotto1.Dropdown
End If
Application.Echo True
End Sub
che serve alla ricerca dei nomi dei prodotti che
contengono la stringa digitata e non solo quelli che
iniziano con quella particolare stringa.
Uso inoltre diverse suform in modalità maschera continua ( ad esempio quella che visualizza l'elenco dei prodotti immessi.
Ecco uno screen per farvi un'idea.
Dal punto di vista tecnico la cosa funziona ma ci sono diversi problemi.
Il maggiore è la presenza di fastidiosi sfarfallii, soprattutto durante la digitazione della stringa nelle combobox a cui ho provato a porre rimedio (senza riuscirci) con
Application.Echo False
come mostrato prima. Non so se avete alternative.
Stavo inoltre riflettendo sulla scelta di utilizzare combobox che contengono elenchi così ampi. Ho paura che una volta popolate le tabelle access faccia fatica a caricare la maschera e a gestire tutti i dati.
Ho pensato che potrei sostituirle con listbox ma non so se la cosa potrebbe risolvere il problema.
Mi sembra anche di aver capito che la maschere continue siano abbastanza problematiche. Ad esempio quando digito del testo della combobox per la scelta del prodotto ho un continuo refresh della subform che elenca i pazienti che mi fa perdere il focus sul paziente selezionato in quel momento.
Anche in questo caso mi chiedevo se passare al foglio dati potrebbe essere una valida alternativa.
Voi cosa ne pensate? Come gestireste il tutto?
Grazie per i vostri consigli!