It is currently 1 October 2020, 4:02 Advanced search

DO MASTER-DETAIL VALORIZZAZIONE CAMPI CHIAVE

Questions and answers on how to best use Instant Developer

DO MASTER-DETAIL VALORIZZAZIONE CAMPI CHIAVE

Postby lorena.costa » 24 October 2019, 13:07

Buongiorno,
scusate se vi chiedo una cosa forse banale ma ho cercato qua e là e non sono riuscita a trovare...

Ho una casistica di questo tipo. Tabelle:
- TESTATA: CAMPO CHIAVE: NUMERODOCUMENTO....
- RIGHE: CAMPO CHIAVE: NUMERODOCUMENTO + NUMERORIGA...
Le 2 tabelle sono in relazione Master Detail (campo NUMERODOCUMENTO) con relativa Foreign Key.
La classe TESTATA ha la collection RIGHE.

Pannello DO Tipo Master Detail che funziona correttamente (in ricerca).
Il problema è quando INSERISCO RIGHE (valorizzazione campo chiave sul dettaglio).

Da alcune prove, mi sembra di aver capito che in un caso di questo tipo (cioè quando nel DETTAGLIO il campo di relazione con la TESTATA fa parte della chiave primaria del DETTAGLIO) sono obbligata a valorizzare manualmente il campo (NUMERODOCUMENTO) sul dettaglio in quanto non me lo valorizza automaticamente il framework (come invece fa quando in campo di 'relazione' alla testata non fa parte della chiave)..
E' così?
Se sì.. Quindi... quale è il punto giusto ove valorizzare questi campi chiave di dettaglio (diciamo 'derivanti dalla testata')???
Al momento ho provato a valorizzarli sull'evento OnUpdatingRow del Pannelo DETTAGLIO (con una cosa del tipo: if isnull(NUMERODOCdettaglio) ... NUMERODOCdettaglio = NUMERODOCtestata (Pannello)...
Ma essendo 'documentale' sinceramente 'non mi piace molto'.... e credo anche non sia la soluzione migliore.

Consigli? Oppure ho sbagliato completamente il ragionamento/prove di cui sopra???
Grazie 1000 e buona giornata
Lorena
lorena.costa
 
Posts: 15
Joined: 27 October 2015, 13:36

Re: DO MASTER-DETAIL VALORIZZAZIONE CAMPI CHIAVE

Postby lucabaldini » 25 October 2019, 7:44

A dire il vero sono quasi sicuro che la chiave venga portata... ma dopo... durante la verifica per il salvataggio.

Ho una domanda: il campo NUMERORIGA è un contatore? Forse è quello che manca? Se non fai nulla ottieni un errore? Ed è legato al fatto che NUMERODOCUMENTO della riga è nullo?

Comunque, nel caso di classi DO, l'evento giusto (almeno quello che uso io di solito) è l'evento EndTransaction del documento. Quello viene notificato dal framework quando il sistema (pannello in questo caso) ha completato la scrittura delle sue modifiche sul docuemento... dopo, se il pannello chiede anche di salvare, il sistema procede con validate, before save e after save.

Tieni conto che la procedura di ricollegamento delle FK viene eseguita solo quando si tenta di salvare il documento, non prima. Prova a dare un'occhiata al manuale da pagina 181... in particolare a pagina 205 c'è il ciclo di salvataggio di un documento con collection (quindi nel caso di pannelli master-detail per esempio).

Il manuale lo trovi qui: https://doc.instantdeveloper.com/inde-users-guide.pdf
User avatar
lucabaldini
Pro Gamma
Pro Gamma
 
Posts: 4578
Joined: 1 October 2010, 17:03
Location: Bologna

Re: DO MASTER-DETAIL VALORIZZAZIONE CAMPI CHIAVE

Postby lucabaldini » 25 October 2019, 7:45

Altro consiglio: prova a dare un'occhiata anche ai messaggi della videata di debug per capire quello che succede... lì si dovrebbe capire cosa manca... :-)
User avatar
lucabaldini
Pro Gamma
Pro Gamma
 
Posts: 4578
Joined: 1 October 2010, 17:03
Location: Bologna

Re: DO MASTER-DETAIL VALORIZZAZIONE CAMPI CHIAVE

Postby lorena.costa » 25 October 2019, 9:02

Grazie per le risposte...
- il problema non è il n° riga che comunque non è un contatore :-( questo è un problema che affronterò successivamente)..... per questo test lo digito a mano...
- il problema mi sembra proprio l'assenza dei campi 'chiave' derivanti dalla Testata.
Ho un progetto di Test semplice che allego così puoi vedere le mie varie prove.
Da Menù:
DOCUMENTO - MIA PROVA CHE NON FUNZIONA (Tabelle/Classi TESTATE e DETTAGLI)
DOCUMENTO 1 - Prova funzionante (foreign key non campo chiave).. Tabelle/Classi TESTATE1-DETTAGLI1
Il mio caso è nella videta DOCUMENTO.
Inserisco una testata (data e n°)...
Vado sulle righe (dove ho aggiunto solo x vederli i campi di chiave DATA e N°) indico N° RIGA e DATO e mi segnala subito errore...
Riesco a valorizzarli su DETTAGLI.OnupdatingRow (adesso 'remmato')...

Mah..? O sbaglio qcs oppure non so...
Penso sicuramente di sbagliare... sono i primi approcci DO che tento coi pannelli lavorando sul DB ('antico') del ns gestionale ...fino ad oggi lavorando solo con procedure diciamo che 'potevo fare un pò come credevo' nell'impostare i campi chiave... (eh... Santo DO_ID... che però in questo caso proprio non posso usare :-( )...
Cmq.. Grazie
Lorena
Attachments
Test.zip
Test.idp Semplice progettino di esepio per problematica esposta.
(469.36 KiB) Downloaded 117 times
lorena.costa
 
Posts: 15
Joined: 27 October 2015, 13:36

Re: DO MASTER-DETAIL VALORIZZAZIONE CAMPI CHIAVE

Postby lucabaldini » 25 October 2019, 15:44

Ho trovato il problema. Il motivo è che la collection DETTAGLI che hai creato dentro alla classe TESTATA non è collegata alla "sua" FK... quindi non sa che c'è quel collegamento tra la testata e i documenti contenuti in quella collection. Infatti, ho notato che hai dovuto inserire la query di caricamento proprio perché altrimenti non venivano caricati i figli (ed il motivo è lo stesso... quella collection non sapeva quale relazione usare).

Per "sistemare" la cosa puoi tirare la foreign key (quella contenuta nella tabella TESTATA) direttamente sulla collection... A quel punto puoi eliminare la query di caricamento che non ti serve più (anche perché è una query semplice... usi le proprietà legate alla FK, la stessa cosa la fa il framework se sa quale FK usare e trova i campi di collegamento).

Probabilmente il motivo è che hai creato manualmente la collection (nuova variabile, tipo object, libreria IDCollection, oggetti contenuti DETTAGLIO). Se la crei tramite D&D (tirando la classe figlia sulla classe padre con il tasto CTRL premuto, te la crea già corretta.
User avatar
lucabaldini
Pro Gamma
Pro Gamma
 
Posts: 4578
Joined: 1 October 2010, 17:03
Location: Bologna

Re: DO MASTER-DETAIL VALORIZZAZIONE CAMPI CHIAVE

Postby lucabaldini » 25 October 2019, 15:48

Comunque, dovessi aver bisogno di "completare" le operazioni che fa il framework, non usare per la DO l'evento OnUpdatingRow ma usa l'evento EndTransaction del documento:

endtrans.png
endtrans.png (45.08 KiB) Viewed 1366 times
User avatar
lucabaldini
Pro Gamma
Pro Gamma
 
Posts: 4578
Joined: 1 October 2010, 17:03
Location: Bologna

Re: DO MASTER-DETAIL VALORIZZAZIONE CAMPI CHIAVE

Postby lorena.costa » 30 October 2019, 8:30

Ahhhh... ecco dove stava l'inghippo!!! Ora ho capito... abbiate pazienza sto proprio iniziando ora a vedere i collegamenti tra collection.. sicuramente creavo la collection senza il tasto Ctrl... ecco perche!!!
Sì.. certo... per 'completare' le operazioni avevo inizialmente messo l''evento OnEndTransaction del doc... ma (forse legato al problema di errato collegamento) ovviamente mi dava errore (mi pare oggetto non impostato... nel senso che cmq 'nn mi arrivava' la testata valorizzata...Ora provo ma sono cera che funzionara!!!!
Grazie infinite!!!
Lorena
(PS... Sto tentando una impresa 'epica'.. nel senso che per capire bene InDe sto lavorando alla trasformazione del ns applicativo di Gestione Preventivi/Ordini... che è 'enorme' e ne ha di ogni... Qual miglior modo di imparare ma davvero sul campo??? In questo modo sto davvero imparando tantissime cose che prima mi erano sfuggite.. ma ahimè... abbiate pazienza credo che vi 'romperò le scatole' molto spesso... )... Cmq fino ad ora: InDe lo trovo davvero 'grandioso'... :-D
lorena.costa
 
Posts: 15
Joined: 27 October 2015, 13:36

Re: DO MASTER-DETAIL VALORIZZAZIONE CAMPI CHIAVE

Postby lucabaldini » 30 October 2019, 10:54

Non c'è nessun problema... ma proprio nessuno nessuno... le domande che fai non sono per niente banali né stupide... anzi, sono convinto che rispondere a quelle domande possa aiutare tanti altri...

Quindi, tutto perfetto!!! Avanti così!!!! :-)))))

E figurati!!!

P.S. sono convinto che sia un buon modo per imparare bene... se hai bisogno scrivi pure qui... E' il canale giusto per domande di questo tipo... Non ti preoccupare... di pazienza ne ho tanta!!!!!

Buon lavoro!
User avatar
lucabaldini
Pro Gamma
Pro Gamma
 
Posts: 4578
Joined: 1 October 2010, 17:03
Location: Bologna


Return to Tips & Tricks

Who is online

Users browsing this forum: No registered users and 4 guests

cron