[Risolto] Riempimento automatico del campo

Discussioni sulle caratteristiche di database
Rispondi
fbrusa
Messaggi: 11
Iscritto il: mercoledì 16 settembre 2020, 21:16

[Risolto] Riempimento automatico del campo

Messaggio da fbrusa »

Un saluto a tutti, inizio con il mio primo quesito.
Sto costruendo un DB prendendo qua e là informazioni su come costruirlo, Main Form, Subform,ecc...
In buona sostanza devo creare un'anagrafica cliente (MainForm), ed a ogni cliente collegare un Subform con all'interno i relativi campi associati (Prodotto,Descrizione,Prezzo,Data), sino a qui sono arrivato, ma la mia necessità è quella che all'inserimento del singolo prodotto nel subform desidero che il campo a fianco Descrizione, Prezzo si compilino in automatico andandoli a prendere dalla tabella prodotti appropriata, così da evitare errori di battitura, ma sopratutto per velocizzare la parte di Data Entry, e qui mi sono arenato, ho fatto relazioni, query, ma non riesco a venirne fuori.
Allego il mio file di esempio per comodità ed analisi, sicuramente da migliorare.
Grazie per la collaborazione.
F.
Allegati
Cliente.odb
Gestione Clienti
(113.9 KiB) Scaricato 209 volte
Ultima modifica di fbrusa il venerdì 2 ottobre 2020, 22:01, modificato 1 volta in totale.
OpenOffice 4.1.7 su W10
Avatar utente
Zago_87
Messaggi: 111
Iscritto il: mercoledì 14 gennaio 2015, 23:53

Re: Riempimento automatico del campo

Messaggio da Zago_87 »

Ciao fbrusa, benvenuto.
Scusa ma non riesco a individuare di quale form stai parlando, ne vedo parecchi.
Un altro dubbio è se tu voglia che ad un cliente vengano associati diversi prodotti in maniera fissa oppure se necessiti di creare per il cliente dei documenti di vendita o trasporto con ogni volta prodotti diversi, magari scaricando dei valori di giacenza da un magazzino.

Se chiarisci meglio lo scopo generale del DB è possibile darti dei suggerimenti più corretti anche per successivi eventuali sviluppi.

Facci sapere!
LibreOffice 6.3.6
Windows 7 PRO
fbrusa
Messaggi: 11
Iscritto il: mercoledì 16 settembre 2020, 21:16

Re: Riempimento automatico del campo

Messaggio da fbrusa »

Ciao Zago_87,
hai ragione nel chiedere chiarimenti, non sono stato preciso.-
Il form in questione è CUSTOMER_2 con relativo Subform PRODOTTI.
Hai centrato la domanda, desidero che per ogni cliente vengano associati vari prodotti in maniera fissa, questo perché a me interessa tenere la traccia di cosa utilizzi ogni cliente, non mi interessa la quantità utilizzata perche non devo fare fatture, ma solo avere la cronistoria dei prodotti utilizzati.
Grazie.
a presto
F
OpenOffice 4.1.7 su W10
Avatar utente
Zago_87
Messaggi: 111
Iscritto il: mercoledì 14 gennaio 2015, 23:53

Re: Riempimento automatico del campo

Messaggio da Zago_87 »

Ok, chiara l'esigenza.
Il formulario che mi indichi ha due campi nascosti e c'è un po' di confusione all'interno osservando il navigatore, anche impostando i campi come visibili non mi sembra funzionare. Sicuro necessiti solo di dover far comparire le altre informazioni dei prodotti?

Anche perché mi sembra che tu vada a salvare l'ID del cliente nella riga del prodotto, in questo caso puoi fare una relazione 1 a 1, ovvero 1 prodotto per cliente.
Se come ho capito invece dei associare diversi prodotti ad un cliente hai bisogno di una tabella dedicata, che crei una riga per ogni associazione, poi di una ricerca che filtri le associazioni un cliente alla volta.

A parte questo l'idea di avere nel MainForm i clienti tra cui puoi spostarti usando la barra di navigazione, nel SubForm i prodotti da salvare (ma in questa tabella dedicata) selezionandoli da una casella di riepilogo, ci sta e credo sia funzionale.

Un dubbio che mi resta è, visto che il DB è strutturato per fare bolle di vendita a quanto vedo, come mai non puoi ottenere i prodotti utilizzati dai clienti facendo una ricerca sui movimenti che selezioni solo valori di prodotto univoci? Scusami se ti dico cose che probabilmente sono ovvie per te ma più capisco e meglio posso provare a dare suggerimenti ;)
LibreOffice 6.3.6
Windows 7 PRO
fbrusa
Messaggi: 11
Iscritto il: mercoledì 16 settembre 2020, 21:16

Re: Riempimento automatico del campo

Messaggio da fbrusa »

Ciao Zago_87,
grazie per il tuo interessamento alla questione.
Per quanto riguarda i due campi nascosti sono state delle prove, quindi non mi servono.
Sono interessato solo ad avere la storia di ogni cliente, non devo fare ne bolle ne fatture, ma solo tenere traccia di quello che utilizzano.
Pensavo nel form principale inserire il cliente, e nel relativo subform inserire i suoi prodotti utilizzati.
Certo poi successivamente dovrò. creare anche dei form per la ricerca cliente, dei form per inserimento prodotti.
Grazie per le info
F
OpenOffice 4.1.7 su W10
Avatar utente
Zago_87
Messaggi: 111
Iscritto il: mercoledì 14 gennaio 2015, 23:53

Re: Riempimento automatico del campo

Messaggio da Zago_87 »

Le strade percorribili sono tante per ottenere quello che vuoi, dipende da come ti resta più chiaro e comodo strutturare il DB, anche in base alle successive funzionalità che vorrai aggiungere, insomma una pianificazione precisa prima ti torna sicuramente utile.
Fatto questo ti consiglio di iniziare a costruire un DB ex novo, funzionante il più possibile e ripulito dei vari test in modo che chi cerca di darti supporto ha una idea chiara di cosa si trova davanti.
Da quel che ho capito al momento hai bisogno sicuramente di una tabella clienti, una prodotti e una per le associazioni cliente/prodotti dove andranno salvate le coppie di ID abbinati.
Per i formulari puoi iniziare con il primo form unico, cliente in alto e barra navigazione, sezione per il salvataggio delle associazioni cliente/prodotti e magari una tabella riepilogativa dei prodotti già associati. Così per i prodotti dovresti inserirli e modificarli direttamente da tabella, altrimenti il secondo formulario sarà proprio quello per questa operazione. E così via...

Tornando alla tua domanda iniziale, per selezionare un prodotto da associare ai clienti puoi usare ad esempio una casella di riepilogo che visualizzi concatenate tutte le informazioni che richiedi ma anche una tabella, con possibilità di mettere un filtro di ricerca. Insomma anche qui dovresti immaginare in base alle tue esigenze cosa ti resti più comodo. Se hai pochi prodotti e molto differenti tra loro la casella di riepilogo può andare, probabilmente la tabella con filtro di ricerca aiuta su una quantità maggiore di prodotti magari anche simili tra loro, anche se un po' più complessa da strutturare forse.

Spero di averti dato degli spunti utili
LibreOffice 6.3.6
Windows 7 PRO
fbrusa
Messaggi: 11
Iscritto il: mercoledì 16 settembre 2020, 21:16

Re: Riempimento automatico del campo

Messaggio da fbrusa »

Grazie per gli spunti, inizierò a riprogettare il DB.
F
OpenOffice 4.1.7 su W10
fbrusa
Messaggi: 11
Iscritto il: mercoledì 16 settembre 2020, 21:16

Re: Riempimento automatico del campo

Messaggio da fbrusa »

Ciao a tutti.
Ecco il nuovo DB ridisegnato.
Se apriamo il form CUSTOMER2_FORM ed andiamo al record numero 2, mi piacerebbe che nel subform sottostante quando inserisco il prodotto (HINL50MPI), automaticamente si popoli il campo descrizione, e il campo prezzo di riferimento a quel record , questi valori sono stati inseriti precedentemente nella tabella ITEMS2, così che ad ogni inserimento di prodotto nel subform se è esistente mi proponga l'automatismo.
Qui non sono in grado di creare questa funzione, chiedo un suggerimento.
grazie per l'attenzione. A presto
F
Allegati
Cliente_2.odb
(51.96 KiB) Scaricato 196 volte
OpenOffice 4.1.7 su W10
Avatar utente
Zago_87
Messaggi: 111
Iscritto il: mercoledì 14 gennaio 2015, 23:53

Re: Riempimento automatico del campo

Messaggio da Zago_87 »

Grazie per aver semplificato il DB ;)

Per far comparire quei dati nella tabella del formulario ti consiglio di utilizzare una vista, si cerca sempre di non avere dati ridondanti, quindi:
- Nella tabella ORDINE elimina tutte le colonne lasciando soltanto ID_ORDINE, ID e ITEM_ID.
- Fatto questo crea una vista (Tabelle, Crea vista...) che recuperi dalle varie tabelle tutti i dati che ti servono partendo semplicemente dagli ID.
- A questo punto cambia l'origine dei dati nella tabella del formulario selezionando proprio la vista che hai appena creato.
- Nei campi "Collega da" e "Collega per" Seleziona il campo "ID" che è quello che mette in relazione il form principale con il secondario, filtrandolo.

Questa è la soluzione, funzionante e senza macro, che penso faccia al caso tuo.
Per ora utilizza la funzione guidata per la vista e vedi se riesci, altrimenti posso essere più specifico e allegare il linguaggio SQL o il DB modificato, dimmi tu come preferisci. Sicuramente per imparare è utile sbattere un po' la testa :crazy:
LibreOffice 6.3.6
Windows 7 PRO
fbrusa
Messaggi: 11
Iscritto il: mercoledì 16 settembre 2020, 21:16

Re: Riempimento automatico del campo

Messaggio da fbrusa »

Ciao Zago_87,
concordo con te, se metti le mani nella marmellata, è l'unico modo per imparare.
Ho fatto come da te precisamente descritto, ma alla fine quando lancio il nuovo form appena creato, non mi permette di vedere i record precedentemente inseriti(sto sbagliando qualcosa).
Avevo comunque nel precedente DB fatto la relazione tra le tabelle come da te suggerito nella modalità vista, ma anche in quel caso senza riuscire a farlo funzionare.
Allego il DB con le nuove modifiche per una tua consultazione, e per suggerirmi dove porre attenzione per la soluzione al mio problema.
Grazie
F

ps. se vuoi allegare anche SQL, non mi farebbe male per imparare anche quello (credo che leggendo quel codice si possa anche interpretarlo per costruire graficamente quello già fatto. O no!
Allegati
Cliente_3.odb
Gestione Clienti
(60.9 KiB) Scaricato 201 volte
OpenOffice 4.1.7 su W10
Avatar utente
Zago_87
Messaggi: 111
Iscritto il: mercoledì 14 gennaio 2015, 23:53

Re: Riempimento automatico del campo

Messaggio da Zago_87 »

Ti rispondo velocemente da lavoro e fino a domani non potrò verificare il tuo DB, provo comunque alla cieca.
Da come scrivi è come se hai il formulario impostato solo per inserire nuovi dati. Quello che avevi già fatto andava bene, era sufficiente modificare la tabella del SubForm indicando la vista come sorgente dati e impostare il collegamento tra Main e Sub.
Ti sconsiglio di impostare le relazioni tra le tabelle dal relativo pannello, a primo impatti può risultare utile, con il tempo limitante. Quelle relazioni le imposti di volta in volta quando ti occorrono, in una vista o in una ricerca ad esempio.

In questo caso il codice per la vista sarà una cosa di questo tipo:

Codice: Seleziona tutto

SELECT IDordine, IDcliente, NOMEcliente, IDprodotto, NOMEprodotto, ecc
FROM TABordini, TABclienti, TABprodotti
WHERE IDcliente della TABordini = IDcliente della TABclienti AND IDprodotto della TABordini = IDprodotto della TABprodotti
Ho scritto volutamente male i riferimenti perché non ricordo bene come li hai chiamati tu nel DB ma questa è la struttura dell'SQL per creare la vista che ti occorre.

In pratica:
- nella SELECT dichiari tutti i dati che ti servono (si scrivono "nometabella"."nomecolonna"), compresi gli ID anche se poi non vorrai visualizzarli nella tabella del formulario.
- nel FROM citi tutte le tabelle interessate.
- nella WHERE imposti le famose relazioni, dicendo che l'ID del fornitore tra tabella ordini e tabella fornitori deve corrispondere, stessa cosa per l'ID prodotto.

Puoi usare la procedura guidata per vedere la sintassi corretta, poi ti consiglio di imparare a scrivere pian piano l'SQL in maniera autonoma, la procedura guidata a volte fa brutti scherzi.

Il risultato della vista deve essere un numero di righe pari a quello della tabella ordini ma con associati i dati extra che volevi compilati automaticamente.
Occhio che a memoria la tua tabella ordini era priva di tutti i dati, in pratica in ogni riga devi avere l'ID dell'ordine (progressivo), poi l'ID del cliente e quello del prodotto associato.
Cerca di ottenere questo poi passa al resto. ;)
LibreOffice 6.3.6
Windows 7 PRO
fbrusa
Messaggi: 11
Iscritto il: mercoledì 16 settembre 2020, 21:16

Re: Riempimento automatico del campo

Messaggio da fbrusa »

Ciao a tutti,
ho riprovato ma non riesco a venirne fuori.
Ho ripensato alla cosa e mi è venuto in mente se fosse possibile utilizzare in Base la funzionalità che si può utilizzare in Calc, cioè sto parlando della funzione Cerca.Vert().
Perchè quando andrò ad inserire nel subform nel campo Prodotto "HINL50MPI" mi piacerebbe che nel campo DESCRIZIONE compaia in automatico la descrizione relativa a quel prodotto.
So di ripetermi ma sto cercando questa funzionalità per evitare di scrivere e sopratutto sbagliare ad inserire ogni volta i dati, anzichè farlo una sola volta.
Allego il file per capire dove sono arrivato.
Grazie
F
Allegati
Cliente_4.odb
Gestione Clienti
(52.73 KiB) Scaricato 160 volte
OpenOffice 4.1.7 su W10
Avatar utente
Zago_87
Messaggi: 111
Iscritto il: mercoledì 14 gennaio 2015, 23:53

Re: Riempimento automatico del campo

Messaggio da Zago_87 »

Scusa ma sono stato spesso fuori casa e non ho la possibilità di usare LO sul portatile con cui giro.

La funzionalità cerca.vert si replica su Base nel modo descritto nei miei post precedenti, anche se probabilmente non sono riuscito a spiegarmi bene.
Non si scrive mai due volte la stessa info in un DB, si usano gli ID univoci per richiamare i dati stabilendo relazioni. In questo caso occorre farlo tramite una vista perché credo ci sia un problema con il collegamento tra Main e Sub su LO (non so su AOO), ma poco cambia, il linguaggio SQL è identico.

Riprendo il secondo DB che hai allegato, più pulito dell'ultimo, con il risultato delle operazioni che ti avevo descritto.
Spero che osservando le modifiche funzionanti ti sia più chiaro il procedimento e la dinamica che c'è dietro.

Per ogni chiarimento son qua. ;)
Allegati
Cliente_2_modZago.odb
(18.11 KiB) Scaricato 152 volte
LibreOffice 6.3.6
Windows 7 PRO
fbrusa
Messaggi: 11
Iscritto il: mercoledì 16 settembre 2020, 21:16

Re: Riempimento automatico del campo

Messaggio da fbrusa »

Ciao Zago_87, non devi scusarti ci mancherebbe altro.
Ti ringrazio per avermi preparato la soluzione, ho dato un'occhio e direi che mi va bene, c'è solo un problema che ho riscontrato, nel subform non riesco inserire nuovi record, i campi
credo che siano solo in lettura, ma ho guardato dal menu modifica e sono impostati correttamente anche in scrittura, non capisco dove intervenire.
Ho il sospetto che la "Vista" sia solo in lettura?
Come posso abilitare il campo prodotto in modalità scrittura?
Grazie per la pazienza.
F
OpenOffice 4.1.7 su W10
Avatar utente
Zago_87
Messaggi: 111
Iscritto il: mercoledì 14 gennaio 2015, 23:53

Re: Riempimento automatico del campo

Messaggio da Zago_87 »

Ok, se preferisci lavorare direttamente dalla tabella sotto bisogna cambiare approccio, e in effetti mi sembra una buona soluzione.
Allego il file aggiornato con un secondo formulario che credo possa corrispondere alle tue aspettative e provo a spiegare cosa ho fatto:
- impostato il tipo di campo per PRODOTTO a testo fisso CHAR
- cambiato font alla tabella e messo Courier New (per questo punto e per quello sopra ringrazio Charlie per un post precedente)
- cambiato l'origine dati della tabella passando a un SQL che è quasi identico a quello della vista
- cambiato il tipo di colonna per PRODOTTO passando a casella di riepilogo e impostato l'origine dei dati a SQL
- aggiunto il pulsante elimina prodotto per cancellare la riga selezionata in tabella
- impostato le altre colonne come sola lettura per evitare di modificare i dati dei prodotti
- aggiunto la barra di navigazione per i clienti perché altrimenti fa un po' confusione quando lavori sulla tabella usare quella della finestra (almeno a me :lol:)

In questo modo navighi, modifichi, crei i clienti nella parte superiore, sotto hai la tabella con i prodotti associati, che puoi aggiornare eliminando righe attraverso il pulsante o aggiungendole usando la tendina di riepilogo della prima riga vuota. Per rendere più chiara la selezione del prodotto ho messo codice e descrizione (serve il testo fisso e un carattere non proporzionale per permettere di rendere comprensibile la lettura dei dati) nell'elenco a discesa, poi appena confermata la selezione spostandosi ad esempio sulla riga successiva compaiono il resto dei dati nelle relative colonne.

Spero di aver centrato le tue aspettative :mrgreen:
Allegati
Cliente_2_modZagoV2.odb
(28.44 KiB) Scaricato 103 volte
LibreOffice 6.3.6
Windows 7 PRO
fbrusa
Messaggi: 11
Iscritto il: mercoledì 16 settembre 2020, 21:16

Re: Riempimento automatico del campo

Messaggio da fbrusa »

Ti ringrazio per il lavoro che mi hai svolto, è perfetto, ora cercherò di integrarlo con altre funzionalità necessarie al corretto uso quotidiano, ovviamente cercherò di capire come hai impostato i vari punti che mi hai elencato per farne tesoro per un utilizzo futuro.
Grazie ancora
F
OpenOffice 4.1.7 su W10
nicolaalfredo

Re: [Risolto] Riempimento automatico del campo

Messaggio da nicolaalfredo »

 Editato: @nicolaalfredo ha chiesto ed ottenuto di disattivare il suo account sul forum 
Ciao fbrusa,

Ho una infarinatura SQL e qualche dimestichezza con Openoffice Base. Mi sembra di aver capito che ti interessa visualizzare in un formulario lo storico degli articoli che un cliente fittizio ti ha comprato. Fin qui tutto bene. La procedura guidata del formulario ti consente di collegare il campo di selezione nel principale ad un qualsivoglia campo del secondario. Nel file allegato, il formulario clienti lo fa in modo molto elementare, cioè visualizzando pagina per pagina la cronistoria ordinata per cliente (basta usare il triangolino in basso verso destra per voltare pagina).

E' molto elementare, ma si ottiene il risultato voluto (almeno spero).

Almeno ci ho provato.

Un saluto. ;)
Allegati
magazzino fittizio.odb
(22.96 KiB) Scaricato 88 volte
Rispondi