Gambas-it

Archivi (sola lettura) => Programmazione (Gambas 2) => Topic aperto da: tornu - 06 Aprile 2010, 23:14:57

Titolo: Memorizzare commenti dai documenti
Inserito da: tornu - 06 Aprile 2010, 23:14:57
Mi rendo conto che ciò che ho scritto nell'oggetto di questo post non è molto chiaro, mi scuso ma non mi è venuto di meglio.

Mi serve un vostro consiglio, una traccia da seguire per gestire al meglio la situazione riportata nell'immagine.

Vi spiego, nel programma che utilizzo è sorta questa esigenza, la possibilità di inserire commenti all'interno
di un documento (Rif.1-2 dell'immagine), Fatture, DDT, Ordini, ect..., insomma su qualsiasi documento dovesse servire, come vedete
dall'immagine l'inserimento e la stampa dei commenti non è un problema, la mia difficoltà nasce nel momento in cui devo memorizzare
nel DB MySql le righe contenenti i commenti (in ogni documento per le righe utilizzo una GridView).

Per le righe riportanti gli articoli nessun problema di inserimento in quanto sul DB ci sono i campi appositi, ma come
caspita posso gestire l'inserimento delle righe "commento"?
Che tipo di campo devo creare nel DB tenendo presente che un commento può essere composto anche da più righe
(ovviamente il numero di caratteri andrà limitato)?
Potrebbe essere funzionale fare una tabella apposita per i commenti? (anche se non saprei come impostarla e gestirla)

Naturalmente in seguito all'inserimento devo avere la possibilità di richiamare il documento compresi i commenti
che dovranno naturalmente essere visualizzati nella stessa posizione in cui gli ho inseriti.

Un'ultima cosa per farvi capire come memorizzo i documenti, praticamente ho due tabelle
una dove memorizzo la testata dei documenti (Tipo Documento, Codice Cliente, P.Iva., Tipo pagamento, Totale Documento, ecc...)
l'altra dove memorizzo le righe dei documenti (Id Documento, Cod. Articolo, Prezzo, Sconti, Iva, Totale Riga, ecc..)
(http://)
Titolo: Re: Memorizzare commenti dai documenti
Inserito da: Ceskho - 07 Aprile 2010, 00:28:47
Ma perchè non puoi gestire i commenti come semplici stringhe?come mai ti poni questo problema?Il fatto che i commenti siano più righe non è un problema poichè un testo su tante righe non è altro che una stringa contenente il carattere speciale \n dove necessario per andare a capo....
Titolo: Re: Memorizzare commenti dai documenti
Inserito da: Picavbg - 07 Aprile 2010, 10:10:34

Per le righe riportanti gli articoli nessun problema di inserimento in quanto sul DB ci sono i campi appositi, ma come
caspita posso gestire l'inserimento delle righe "commento"?
Che tipo di campo devo creare nel DB tenendo presente che un commento può essere composto anche da più righe

Potrebbe essere funzionale fare una tabella apposita per i commenti? (anche se non saprei come impostarla e gestirla)una dove memorizzo la testata dei documenti (Tipo Documento, Codice Cliente, P.Iva., Tipo pagamento, Totale Documento, ecc...)
l'altra dove memorizzo le righe dei documenti (Id Documento, Cod. Articolo, Prezzo, Sconti, Iva, Totale Riga, ecc..)
Nell'analisi del problema occorre conoscere due elementi:
1) Con quale frequenza pensi di potere inserire i commenti di cui parli? Se pensi ad inserimento ordinario o quasi, conviene aggiungere un campo in una delle due tabelle. Se invece l'inserimento dei commenti diventa un evento saltuario, allora ti conviene aggiungere una terza tabella, contenente un campo chiave, che potrebbe  essere uguale a quello del corrispondente record della tabella di aggancio.
2) Quale campo costituisce la chiave secondaria, cioè la chiave con cui la prima tabella si aggancia alla seconda (te lo chiedo perchè fra i nomi di colonna delle due tabelle non hai nomi comuni alle due tabelle, a meno che, Tabella1!TipoDocumento e Tabella2!IdDocumento non siano proprio quelli di cui parlo).

Se non ti dispiace, poi, potresti elencare tutti i campi delle tabelle? Ciò permetterebbe di aiutarti meglio.
Il dettaglio relativo alla lunghezza della stringa possiamo analizzarlo in un secondo momento, anche se l'indicazione di Ceskho è sicuramente ottima ed anche facilmente praticabile.
Ciao.


Titolo: Re: Memorizzare commenti dai documenti
Inserito da: tornu - 07 Aprile 2010, 22:05:28
Ma perchè non puoi gestire i commenti come semplici stringhe?come mai ti poni questo problema?Il fatto che i commenti siano più righe non è un problema poichè un testo su tante righe non è altro che una stringa contenente il carattere speciale \n dove necessario per andare a capo....

Non è che non voglio gestire i commenti come stringhe, il problema che mi sono posto è:
se nel documento inserisco un commento di una sola riga, quindi una sola riga di GridView non avrei problemi ad inserirlo previa creazione del campo nel DB.

Ma se inserisco più righe nel documento, quindi più righe nella GridView, come faccio ad inserirle tutte
in un unico campo del DB?

1) Con quale frequenza pensi di potere inserire i commenti di cui parli? Se pensi ad inserimento ordinario o quasi, conviene aggiungere un campo in una delle due tabelle. Se invece l'inserimento dei commenti diventa un evento saltuario, allora ti conviene aggiungere una terza tabella, contenente un campo chiave, che potrebbe  essere uguale a quello del corrispondente record della tabella di aggancio.
2) Quale campo costituisce la chiave secondaria, cioè la chiave con cui la prima tabella si aggancia alla seconda (te lo chiedo perchè fra i nomi di colonna delle due tabelle non hai nomi comuni alle due tabelle, a meno che, Tabella1!TipoDocumento e Tabella2!IdDocumento non siano proprio quelli di cui parlo).

1) E' difficile quantificare la frequenza di utilizzo, sicuramente posso dire spesso, specialmente nei documenti tipo Preventivo, Ordini. Insomma è un esigenza che comunque a chi utilizza gestionali dove si gestiscono acquisti e vendite serve.

2) I nomi dei campi che ho postato erano solo per farmi capire, ho comunque allegato la struttura reale delle due tabelle che ho menzionato.

Titolo: Re: Memorizzare commenti dai documenti
Inserito da: Picavbg - 08 Aprile 2010, 00:09:47
Visto che dici che il commento possa essere inserito spesso, secondo me ti converrebbe aggiungere un'altro campo. Ora si tratta di stabilire in quale delle due tabelle, perchè, poi, tu dici:
Citazione
se nel documento inserisco un commento di una sola riga, quindi una sola riga di GridView non avrei problemi ad inserirlo previa creazione del campo nel DB.
Ma se inserisco più righe nel documento, quindi più righe nella GridView, come faccio ad inserirle tutte
in un unico campo del DB?
Anche se non  l'hai specificato, mi pare di capire che la Tabella_Testata sia quella principale, riferita quindi al documento, mentre la Tabella_righe sia quella contenente le righe di dettaglio di ciascun documento. Un'altra cosa non mi è chiara: Il commento è uno per ciascun documento, quindi uno, anche se nella griglia risultano occupate, per esempio, 10 righe, oppure il commento va riferito a ciascuna riga, quindi 10 righe = 10 commenti?
Scusa la mia ricerca di dettaglio, ma è importante per capire bene cosa ti serve.
Ciao.
Titolo: Re: Memorizzare commenti dai documenti
Inserito da: tornu - 08 Aprile 2010, 01:34:01
Che debba aggiungere un campo siamo d'accordo, anche perchè come hai visto dalla struttura delle tabelle io non avevo previsto questa eventualità, dove inserirlo e di che tipo confido nel vostro aiuto se arriveremo a soluzione.
Si, la tabella testata è la principale.
I commenti all'interno del documento possono essere più di uno, se guardi l'immagine di inizio post vedrai nel documento due commenti uno all' inizio che potremmo per capirci chiamare "commento di testata" e uno alla fine.
Si, il commento può essere uno solo composto da più righe ed essere un commento "unico" come da immagine inizio post, oppure può capitare di inserire in griglia una cosa del genere:
riga articolo
riga commento (riga unica)
riga articolo
due righe commento (comunque da intendersi come commento unico)

Non ti devi scusare, anzi ti ringrazio, perchè non sempre e facile capire la logica di chi chiede come implementare certe funzioni.
Titolo: Re: Memorizzare commenti dai documenti
Inserito da: Ceskho - 08 Aprile 2010, 01:57:26
Dunque..io continuo a non capire...

Ma le diverse righe a cui ti riferisci fanno riferimento comunque alla stessa colonna? Cioè la situazione è qualcosa di simile:

----------------------------------------------------------------------------------------
| ID |    Prodotto     |    Numero     |    Cliente    | Commento   |
----------------------------------------------------------------------------------------
| 01 |    Tubo 14     |   A1586AF    |Mario Rossi |  Venduto     |
----------------------------------------------------------------------------------------
| 02 |  Pacco di viti |   A4542122   |Ciro Verdi    |  Venduto     |
----------------------------------------------------------------------------------------
|     |                     |                     |                  |Ritiro a mano|
-----------------------------------------------------------------------------------------

Giusto?
Titolo: Re: Memorizzare commenti dai documenti
Inserito da: leo72 - 08 Aprile 2010, 08:40:54
Nel mio gestionale inserisco i commenti nei documenti utilizzando un codice "C" per l'articolo che sta appunto per commento.
E' ovvio che se voglio spezzare il commento su più righe sono tenuto ad inserire manualmente più righe col codice "C". Le righe con l'articolo "C" vengono memorizzate come le altre nel DB ma al momento della visualizzazione/stampa del documento non comportano il calcolo dell'IVA né la gestione degli eventuali importi.

E' una soluzione semplice e che porta l'utente a dover spezzare egli stesso il commento su più righe ma è anche la più semplice da gestire.
Titolo: Re: Memorizzare commenti dai documenti
Inserito da: Picavbg - 08 Aprile 2010, 09:40:09
Ooooooooooh, he sbadato; non mi ero ricordato che avevi allegato l'immagine del documento finale nel tuo primo post.
Guardando il documento, la soluzione potrebbe essere assai semplice, perchè vedo che le righe di commento, siano di testata che di chiusura, sono sempre contenute nella colonna della descrizione, quindi è come se all'inizio ed alla fine del documento, all'occorrenza, tu avessi delle righe speciali, contenenti l'impegno di una sola colonna, cioè la colonna descrizione.
A questo punto, potresti realizzare un tipo riga (id_cdart) specifico:
Citazione
Es.:
100001  »» 1^ riga di commento di testata
100002   »» 2^ riga di commento di testata
...................................................................
...................................................................
900001   »» 1^ riga di commento di chiusura
900002   »» 2^ riga di commento di chiusura
Così facendo, probabilmente, non avresti bisogno di aggiungere alle tabelle alcuna colonna, nè di dovere modificare la griglia, ma dovresti riconoscere nella griglia ciascuna riga contenente una descrizione di tipo commento. Naturalmente questo varrebbe solo all'inizio ed alla fine della GridView, perchè la presenza di una riga commento fra le righe "Articolo" sarebbe un errore, come sarebbe un errore anche quello di aggiungere righe articolo dopo le righe "Commento di chiussura".
Per maggiore sicurezza di gestione in programmazione, io aggiungerei nella GridView una colonna prima del codice articolo dove riporterei un simbolo del tipo "ç" o altro che ti sia più simpatico, identificativo del tipo-riga-commento. Esso unito al id_cdart costituirebbe l'algoritmo di riconoscimento e controllo delle righe di commento e ti permetterebbe di escludere la possibilità di cadere casualmente in errore, nella fase di digitazione.
Concludendo: la riga commento della GridView conterrebbe dati significativi solamente nella 1^(nuova colonna)-cod_ç, nella colonna (id_cdart con 10000x o 90000x) e nella colonna Descrizione (che però non ho capito come nasce, perché non mi pare che nella tabella-righe sia presente una descrizione). Ovviamente, per le righe di commento da da riportare sul documento cartaceo, il programma dovrà tenere conto di stampare solamente la colonna descrizione e non altro.
Un problema potrebbe sorgere se nella tabella-righe non hai una descrizione perchè essa viene determinata automaticamente. In quel caso, piuttosto che inserire nuove colonne per i commen ti, converrebbe creare una nuova tabella "tabella-commenti".
Se l'idea ti dovesse piacere potremmo proseguire nel ragionamento costruendo anche le colonne che ne dovessero fare parte.
Ciao.
Titolo: Re: Memorizzare commenti dai documenti
Inserito da: tornu - 08 Aprile 2010, 22:11:39
@Ceskho
Si le righe fanno parte della stessa colonna, nel mio caso la colonna "Descrizione", ma non sono inserite come nel tuo esempio.
Guarda lo screenshot che ho allegato, forse ti aiuta a capire meglio ciò che intendo io.

@leo
Cerco di interpretare la tua risposta, fammi sapere se ho capito bene.
Praticamente tu hai codificato un'articolo che utilizzi per i commenti, presumo che tu abbia nel tuo gestionale un anagrafica articoli
legata ad una tabella o più tabelle nel DB con vari campi, come codifichi l'articolo "C" rispetto agli altri che generano movimenti?
Sei libero di inserire quanti commenti vuoi in qualsiasi punto del documento?

Dici che la tua è una soluzione semplice, scusami ma io non l'ho capita. Potresti spiegarmi meglio la tua logica?

@Picavbg
Diciamo che mi andrebbe bene anche poterle inserire solo all'inizio e alla fine documento, sarebbe il massimo avere la libertà di poterle
inserire in qualsiasi posizione del documento, preciso che l'inserimento "a piacere" io già lo utilizzo (vedi screenshot con form di test  ;D) ma il mio problema e quello iniziale di questa discussione, come le memorizzo nel DB?

Si, le inserisco nella colonna descrizione, mi sembra quella più appropriata visto che è un metodo usato da molti gestionali.
Anche tu praticamente come leo mi suggerisci di codificare degli "Articoli speciali" per riconoscerli come commenti....Uhmm, ho qualche dubbio su questo metodo.
La colonna descrizione non c'è nella tabella "righe documento" ma viene popolata dalle descrizioni degli articoli che tramite la chiave esterna id_cdart mi riporta tutti i dati dell'articolo che mi servono dalla tabella del DB anagrafica articoli. Mi spieghi perchè il programma andrebbe in errore se inserisco commenti tra le righe "articoli"?

Mi piace si l'idea di creare una tabella commenti (era un'idea a cui avevo già pensato), naturalmente mi serve una mano ed uno spunto iniziale da portare avanti insieme.

Naturalmente se altri hanno suggerimenti o diverse strade da proporre saranno bene accetti.

Titolo: Re: Memorizzare commenti dai documenti
Inserito da: leo72 - 08 Aprile 2010, 22:45:20
La logica è semplice.

I miei documenti sono simili ai tuoi nel senso che contengono diverse colonne:
cod. articolo|descrizione|q.tà|prezzo|iva
In fondo al documento ci sono i vari campi per i totali dell'iva, i totali dell'imponibile ed il totale documento.

Durante la fase di inserimento io posso inserire 2 tipologie di riga, un commento o una descrizione articolo.
Se inserisco una voce normale, la riga viene riempita con tutti i campi suddetti. Ma se inserisco un commento basta che utilizzi il codice articolo "C" che, ovviamente, è un codice particolare: quando il programma lo incontra, non tiene conto, nell'aggiornamento dei totali in fondo al documento, dei campi q.tà, prezzo ed iva (che potrei inserire al solo scopo di far vedere al cliente quanto costa, ad esempio una certa cosa ma non calcolargliela come totale).
Le descrizioni vengono salvate nel DB dal mio programma riga per riga per cui a me non interessa a priori sapere di quante o di quali  righe (se commenti o descrizioni) è composto il documento perché ildocumento lo salvo così come l'utente lo inserisce.
Titolo: Re: Memorizzare commenti dai documenti
Inserito da: tornu - 08 Aprile 2010, 23:41:41
Durante la fase di inserimento io posso inserire 2 tipologie di riga, un commento o una descrizione articolo.
Se inserisco una voce normale, la riga viene riempita con tutti i campi suddetti. Ma se inserisco un commento basta che utilizzi il codice articolo "C" che, ovviamente, è un codice particolare.........

Quello che non capisco e che i commenti che tu identifichi come "C" gli chiami articoli, questo a me fa presumere che siano memorizzati da qualche parte o gli associ il codice "C" nel momento dell'inserimento?
Per quanto riguarda i commenti era sottointeso (almeno per come intendo implementarli io) che non devono generare nessun tipo di movimento e non devono essere valorizzati.
Scusa ma non riesco a capire facilmente la tua logica.
Titolo: Re: Memorizzare commenti dai documenti
Inserito da: Picavbg - 08 Aprile 2010, 23:52:21
@Picavbg
Diciamo che mi andrebbe bene anche poterle inserire solo all'inizio e alla fine documento, sarebbe il massimo avere la libertà di poterle
inserire in qualsiasi posizione del documento, preciso che l'inserimento "a piacere" io già lo utilizzo (vedi screenshot con form di test  ;D) ma il mio problema e quello iniziale di questa discussione, come le memorizzo nel DB?

Si, le inserisco nella colonna descrizione, mi sembra quella più appropriata visto che è un metodo usato da molti gestionali.
Anche tu praticamente come leo mi suggerisci di codificare degli "Articoli speciali" per riconoscerli come commenti....Uhmm, ho qualche dubbio su questo metodo.
La colonna descrizione non c'è nella tabella "righe documento" ma viene popolata dalle descrizioni degli articoli che tramite la chiave esterna id_cdart mi riporta tutti i dati dell'articolo che mi servono dalla tabella del DB anagrafica articoli. Mi spieghi perchè il programma andrebbe in errore se inserisco commenti tra le righe "articoli"?

Mi piace si l'idea di creare una tabella commenti (era un'idea a cui avevo già pensato), naturalmente mi serve una mano ed uno spunto iniziale da portare avanti insieme.

Naturalmente se altri hanno suggerimenti o diverse strade da proporre saranno bene accetti.


Si certo dobbiamo arrivare al DB, ed è quello che faremo, però è necessario decidere come costruire gli elementi che servono in funzione di quello che vuoi ottenere e per ora siamo nella fase di studio; quindi ti prego di avere un pò di pazienza. Nel  tuo primo screenshot avevi fatto l'esempio coi commenti posti all'inizio ed alla fine del documento, però se ti necessita gestirli in qualsiasi momento dell'inserimento dati, niente toglie che il programma venga usato così come fai già ora, con l'aggiunta però delle righe di commento. L'errore a cui ti ho accennato nel mio precedente post non è come hai capito, perchè mi riferirvo ad una gestione dell'eventuale errore di digitazione delle righe di commento fuori dalla testata o chiusura di documento, ma una volta che intendi lasciare libero l'inserimento dei commenti, non serve assolutamente inserire una routine di controllo del tipo che vevo immaginato.
Ho visto inoltre che gli id_cdart delle righe di dettaglio sono formati da caratteri alfanumerici, per cui non c'è bisogno di aggiungere una nuova colonna nella Gridview; non ho capito però di quanti caratteri sia, perchè nel primo screenshot lo vedo limitato a 3 caratteri, nel secondo è addirittura di 9 caratteri, È razionale lascire quel codice id di uguale lunghezza, sia per gli articoli, sia per i commenti. Se ti ho portato fuori strada io col mio esempio, ti chierdo scusa. Per i commenti,  potrebbe essere del tipo Cxx con xx variabile da 01 a 99; così facendo rimani nei tre carateri che impegni per gli articoli. ;)
Dici che ti piace l'idea di una tabella commenti, però prima hai detto che la soluzione "commento = articolo speciale" , per usare la tua terminologia, ti lascia dubbioso. Quella che Leo ed io ti proponiamo è la più razionale e semplice da gestire, però se tu non la vedi come soluzione, perchè magari ne pensi una diversa, ma non l'hai esternata, sei liberissimo di attuarla. Volevi un'idea ed io, come gli altri amici che hanno colto la tua chiamata, ho semplicemente cercato di darti una mano. Il fatto che cerchi altre soluzioni vuol dire che come la vedo io non ti piace.
Secondo me, a uesto punto, l'alternativa é: se hai un'idea tua, sputala fuori; se vuoi cercare un'altra soluzione, ancora diversa da quella a cui ho poensato io, dillo chiaramente; se ne può cercare benissimo un'altra.
Il bello della programmazione è che non viaggiamo su un binario come un treno, per cui possiamo apportare tutte le varianti che vogliamo. L'importante è arrivare alla stazione d'arrivo, senza perdere passeggeri per strada (passeggeri = dati). :D
Io sono sempre qui, pronto, con le mie conoscenze, a darti una mano,
Ciao.
Titolo: Re: Memorizzare commenti dai documenti
Inserito da: tornu - 09 Aprile 2010, 01:57:43
Nessuna fretta, sono d'accordissimo con te la fase di studio va approfondita fino a trovare la soluzione migliore, poni pure tutte
le domande che vuoi.
Naturalmente la soluzione che permette di inserire i commenti in qulasisi posizione sarebbe la migliore se fattibile, il primo screenshot
è un vecchio test di stampa che ho postato per mostrarvi praticamente ciò che volevo ottenere.
L'ultimo screenshot allegato è un form di test che uso per fare prove, allego il form e il documento definitivo che uso attualmente.
Scusami se ciò ti stava portando fuori strada.

Per quanto riguarda l'id_cdart ti spiego ,  viene generato automaticamente dal DB ad ogni inserimento ed è di tipo int (6) auto_increment, il codice articolo (codice originale del fronitore) e di tipo varchar (16).

Assolutamente, non volevo intendere che la vostra ipotesi non sia valida o non mi piaccia, mi scuso se ho dato questa impressione con la mia risposta. Quando ho espresso il dubbio sull'idea di trattare i commenti come articoli forse ho frainteso ciò che voi avete detto e ciò che io intendo come articolo, ho chiesto il vostro aiuto proprio perchè cercando una soluzione da solo non ne venivo a capo e tuttora sono al punto di partenza.
Quindi se hai già un'idea o se vuoi approfondire ulteriormente lo studio, sono a disposizione.

P.S.: Naturalmente sul form e sulla stampa dei documenti "originali" che ho allegato non ci sono commenti, in attesa di risolvere per poterli utilizzare in produzione.

Titolo: Re: Memorizzare commenti dai documenti
Inserito da: Picavbg - 09 Aprile 2010, 10:06:53
Non ti preoccupare, non sono risentito; se lo fossi stato non ti avrei confermato la mia disponibilità.  :D
Per definire le colonne della nuova tabella_commenti, occorre individuare i riferimenti di partenza, perciò vorrei capire anche:
Nella Form che hai allegato ed in particolare nel pannello "Tipo Documento", fra gli oggeti disegnati, ci sono "CD.Causale" ed il "Nr. Documento". Credo che essi corrispondano alle colonne "causale" e "nrdoc" della "tabella_testata". Quali dei due è univoco, o nessuno dei due? Guardondo l'etichetta di riferimento, il primo dovrebbe essere ripetitivo, sia relativamente allo stesso cliente che ad altri clienti, il secondo potrebbe essere assoluto, quindi nella "tabella_testata" si dovrebbe incontrare, per lo stesso anno,  una e una sola volta. Ho capito bene? Sarebbe bene infatti individuare una colonna contenente codici mai ripetibili; una ci sarebbe, la "id-tedoc", se corrispondesse ad un id integer autoincrementale; l'importante è però che la tabella non venga mai sottoposta a procedure di ordinamento che possano modificare il contenuto di "id-tedoc" e la sequenza originaria delle righe di tabella. 

Le righe di commento, mi pare di capire, servono in stampa nel documento finale, ma serve anche che siano sempre visibili nella gridview, sotto la relativa riga di dettaglio articolo,  o le vuoi vedere solo, per esempio, all'atto della selezione della riga che ti interessa? Te lo chiedo perchè in quest'ultimo caso potresti colorare i caratteri delle righe corredate di commenti in maniera diversa ed esplodere una listbox/listview contenente i commenti al momento in cui ci si vada  a cliccarci sopra per selezionare la riga. Naturalmente la listview o la listbox che sia andrebbe definita con la proprietà visible=false, per modificarla in visible=true in seguito al click sulla riga di riferimento. È un'idea; infatti vorrei capire come vorresti gestire nella gridview le righe di commento, perchè guardando la form vedo che se scrivi, per es., 2 commenti per ciascun articolo, la tua gridview, conterrebbe alla fine della digitazione, più commenti che articoli e diventerebbe troppo dispersiva. Forse è questo il motivo per cui l'idea iniziale sulla gestione dei commenti non ti sembra congeniale.
Ciao.

Titolo: Re: Memorizzare commenti dai documenti
Inserito da: tornu - 09 Aprile 2010, 21:46:19
Nella Form che hai allegato ed in particolare nel pannello "Tipo Documento", fra gli oggeti disegnati, ci sono "CD.Causale" ed il "Nr. Documento". Credo che essi corrispondano alle colonne "causale" e "nrdoc" della "tabella_testata".
Esatto

Quali dei due è univoco, o nessuno dei due? Guardondo l'etichetta di riferimento, il primo dovrebbe essere ripetitivo, sia relativamente allo stesso cliente che ad altri clienti, il secondo potrebbe essere assoluto, quindi nella "tabella_testata" si dovrebbe incontrare, per lo stesso anno,  una e una sola volta. Ho capito bene?
Hai capito bene

Sarebbe bene infatti individuare una colonna contenente codici mai ripetibili; una ci sarebbe, la "id-tedoc", se corrispondesse ad un id integer autoincrementale; l'importante è però che la tabella non venga mai sottoposta a procedure di ordinamento che possano modificare il contenuto di "id-tedoc" e la sequenza originaria delle righe di tabella. 
Si, corrisponde ad un id di tipo integer auto_increment.
Cosa intendi per "procedure di ordinamento"?
Per come ho impostato io il programma funziona così:
emetto un documento, che è unico per tipo, numero e data legato al cliente, entro il 15 del mese (scadenza iva) successivo l'utente puo modificare o cancellare il documento, quindi verranno interessate anche le righe di commento, successivamente a tale data il documento si potrà solamente visualizzare e non sarà più ne modificabile, ne cancellabile.

Le righe di commento, mi pare di capire, servono in stampa nel documento finale, ma serve anche che siano sempre visibili nella gridview, sotto la relativa riga di dettaglio articolo,  o le vuoi vedere solo, per esempio, all'atto della selezione della riga che ti interessa?
Sì, per quanto riguarda stampa e la visualizzazione. Per quanto riguarda il metodo, diciamo che non ho al momento una preferenza.
Diciamo che il metodo che hai indicato, della ListBox o ListView può anche andar bene, ti posso dire in base anche alla tua esperienza e ai tuoi suggerimenti scegliamo la strada meno complicata ma funzionale. Poi sai come è l'appettito vien mangiando.
Titolo: Re: Memorizzare commenti dai documenti
Inserito da: Picavbg - 09 Aprile 2010, 23:34:47
Cosa intendi per "procedure di ordinamento"?
Per come ho impostato io il programma ....
No, non c'entra l'impostazione del programma. A volte si può avere la comodità di avere i record di tabella disposti in ordine crescente rispetto al contenuto di una colonna (Es.: $professione). Allora, specialmente se la tabella è sottoposta a continui inserimenti, arrivato ad un certo momento può succedere che la colonna $professione, per rimanere nell'esempio, contenga nei record accodati valori come "lattoniere, ingegnere, sarto, orologiao, ...). Come vedi i record non rispettano più l'ordine alfabetico delle professioni. Allora qualcuno può inventarsi una funzione di utility da selezionare saltuariamente che rimetta ordine in tutti i record della tabella, in modo da ottenere alla fine l'assoluto rispetto dell'ordine alfabetico rispetto alla colonna $professione. Ma la risequenziazione dei record determina anche la rinumerazione dell'id autoincrementale della tabella, per cui se prima il record di tabella con $professione="orologiao" aveva un codice id=168, dopo la risequenziazione potrebbe diventare id=237. Allora, in generale, non è mai consigliabile, in strutture del genere, costruire una chiave di collegamento fra tabelle sul codice id
Spero di essere stato chiaro.
Citazione
Sì, per quanto riguarda stampa e la visualizzazione. Per quanto riguarda il metodo, diciamo che non ho al momento una preferenza.
Diciamo che il metodo che hai indicato, della ListBox o ListView può anche andar bene, ti posso dire in base anche alla tua esperienza e ai tuoi suggerimenti scegliamo la strada meno complicata ma funzionale. Poi sai come è l'appettito vien mangiando.
.
Sono d'accordo. Perciò conviene lasciare tutto bene in vista, anche nella gridview; più avanti, come dici tu, se detto utilizzo ti impegna troppe righe, tanto da appesantire visivamente lo scorrimento  righe, all'interno della gidview, potrai sempre inserire gli oggetti che ti serviranno.

Chiarito il concetto sulla scrittura dei commenti nella gridview (la stampa è semplicemente una conseguenza), non resta che definire la nuova tabella per inserirvi i commenti digitati durante la compilazione della gridview.
Velocemente ti espongo il mio pensiero:
Citazione
Tabella_Commenti
id                        autoincrementale
riftbtest            Riferimento alla tabella_testata  (contiene il campo nrdod e l'anno della dtdoc nel formato (Es. nnnnAA), forse meglio AAnnnn)
riftbriga            Riferimento alla tabella_riga (contiene id_cdart)
nprocomm        N°progressivo di commento relativo allo stesso cod.Articolo
Commento       Stringa contenente il commento digitato

In pratica, dopo avere effettuato l'inserimento dei commenti ed averli trasferiti nella gridview, sotto la riga dell'articolo a cui si riferiscono, nel momento in cui vai a registrare nelle tabelle del DB i dati presenti nella gridview (non so se ciò viene svolto per ogni riga di articolo inserito, oppur dopo avere completato l'inserimento articoli), registri nella tabella_commenti i record relativi alle righe di commento presenti nella gridview, facendo attenzione a riportare anche i campi che costituiranno poi in lettura la chiave di ricerca nella tabella_Commenti, cioè: riftbtest e riftbriga.
Dovrebbe essere chiaro, ma se hai bisogno di ulteriori dettagli, possiamo addentrarci ulteriormente.
Ciao.

P.S.: I nomi chew ho usato nella pseudo struttura della tabella_Commenti sono solo indicativi. È ovvio che li puoi denominare come vuoi tu.

Titolo: Re: Memorizzare commenti dai documenti
Inserito da: tornu - 10 Aprile 2010, 19:34:36
Sei stato chiarissimo, non è il mio caso. Non c'è da programma nessuna possibilità da parte dell'utente di intervenire per ordinare o per esempio ripristinare id cancellati (qualche programma che ho visto lo prevede) sulle tabelle.

Veniamo alla tabella che mi hai suggerito:
nel campo riftbtest devo inserire l'id testata documento?
nel campo riftbriga devo inserire l'id dell'articolo a cui si riferisce il commento? E se il commento non è legato all'articolo (commenti di testata e di chiusura)?
nel campo nprocomm non ho capito cosa devo inserire.

Registro i dati nel DB in un'unico passaggio dopo aver completato l'inserimento in GridView con un ciclo For...Next.
Un'altra cosa, come faccio a scindere le righe commento dalle righe articoli per inserirle nella tabella commenti?
Titolo: Re: Memorizzare commenti dai documenti
Inserito da: leo72 - 11 Aprile 2010, 11:50:48
Quello che non capisco e che i commenti che tu identifichi come "C" gli chiami articoli, questo a me fa presumere che siano memorizzati da qualche parte o gli associ il codice "C" nel momento dell'inserimento?
Per quanto riguarda i commenti era sottointeso (almeno per come intendo implementarli io) che non devono generare nessun tipo di movimento e non devono essere valorizzati.
Scusa ma non riesco a capire facilmente la tua logica.

La logica è semplice. La descrizione dei documenti io la salvo in una tabella a parte. La tabella contiene un codice identificativo del documento composto da tipodocumento-numero-anno (tipodocumento vale "N" per le note di credito, "F" per le fatture. Quindi N234-2009 vuol dire nota di credito n°234 del 2009). Nella tabella ci sono delle colonne identificate come "codice", "descrizione", "prezzo", "qta", "importo". Ogni record contiente TUTTE le righe di un documento separate da "\n". Basta che faccia uno Split sul valore di ogni cella per avere tutti i codici, tutte le descrizioni ecc....
Titolo: Re: Memorizzare commenti dai documenti
Inserito da: Picavbg - 11 Aprile 2010, 16:13:20
Prima di tutto, ti chiedo scusa per il ritardo, ma, purtroppo, dopo avere formulato la risposta, lo stesso giorno in cui hai scritto la tua, casualmente ho pigiato un tasto sbagliato della tasiera e sono entrato in un labirinto dal quale non sono più uscito, fino a perdere il testo già scritto e, peggio ancora, a dimenticare la passw. Sto riprendendo solo ora, ed eccomi pronto a riprendere il nostro percorso.

1):
Citazione
nel campo riftbtest devo inserire l'id testata documento?
Il campo è l'unione di due valori: (d'ora in poi per legare il nome colonna interno ad una delle due tabelle userò il formato Nome_Tabella!Nome_Colonna)
Table_Testata!nrdoc  (di cui non conosco la lunghezza, ma non ha importanza, ci penserai tu)
e
Table_Testata!dtdoc  (di cui interessa solo l'anno nel formato AAAA (meglio di AA)
Per semplicità il campo che avevo pensato può essere scomposto in due campi così dettagliati
RifAnnoTbTestata    (contiene l'anno del campo Table_Testata!dtdoc)
RifNuDocTbTestata   (contiene il valore del campo Table_Testata!nrdoc)

2):
Citazione
nel campo riftbriga devo inserire l'id dell'articolo a cui si riferisce il commento?
il campo va agganciato all'articolo della table_righe e riporta il valore contenuto nel campo Table_Righe!id_cdart

3):
Citazione
nel campo nprocomm non ho capito cosa devo inserire.
Esso è più difficile da capire perchè è nuovo e nasce dal seguente ragionamento: ogni commento, formato da una o più righe, all'interno della colonna "Descrizione" va riferito all'articolo contenuto nella riga immediatamente precedente; perciò, piuttosto che pensare ad un unico campo commento, ho pensato di dividerlo in tanti parti quanto sono le righe che esso impegna nella colonna "Descrizione", in modo da suddividerlo una volta sola e non farlo perciò ogni volta che se ne debba fare uso. Ma se così non interessa perchè non lo dovrai usare più spezzettato, si può lasciare intero. In quest'ultimo caso il campo "nprocomm" che ti ho suggerito non serve più. Per completezza di dico che esso conterrebbe un n° progressivo agganciato alla riga di commento (1, per la prima riga di commento; 2, per la seconda riga di commento: e così via.
Decidi tu se usarlo oppure no. Io lo userei, perchè, così impostato, fa strettanmente riferimento al documento in cui è stato generato, tanto se successivamente lo dovessi usare, riunendolo in un unica riga, dovresti scrivere un'istruzione di unione(Es.: Campo_unione=Commento.1 & Commento.2 & ... &Commento.n), più semplice di quella di scomposizione .

Poi tu dici:
Citazione
E se il commento non è legato all'articolo (commenti di testata e di chiusura)?
Codesta è un'eventualità che non traspariva negli esempi che hai fornito, quindi non l'ho immaginata. Potremmo agganciarli, il primo, ad un ipotetico articolo "testata", mentre il secondo, ad un altrettanto ipotetico articolo "chiusura", ma ci penseremo dopo avere delineato la struttura tabellare per i commenti ... fra le righe.

Spero di essere riuscito a trasmettere il mio pensiero. Se non dovesse essee così, pazienza, vuol dire che mi merito un "----- 0"  :D
Ciao.
Titolo: Re: Memorizzare commenti dai documenti
Inserito da: tornu - 11 Aprile 2010, 23:18:08
Assolutamente non ti devi scusare, non ci corre dietro nessuno, sono io che ti devo ringraziare per la disponibilità.
Ok, ora il tuo ragionamento mi è più chiaro, anche come strutturare la tabella.

L'unico dubbio che mi è rimasto come ti ho esposto nella risposta precedente, è come fare a distinguere le righe "commento" dalle righe "articolo" quando  devo inserire nel DB i dati, se mi puoi dare qualche dritta.

Comincio a mettere in pratica e fare le prime prove su tutto il ragionamento che abbiamo fatto e ti faccio sapere.
Per quanto riguarda i commenti "testata" e "chiusura" sono d'accordo ci pensiamo successivamnte.
Grazie, ciao

Titolo: Re: Memorizzare commenti dai documenti
Inserito da: Picavbg - 12 Aprile 2010, 13:21:07
Ok, ora il tuo ragionamento mi è più chiaro, anche come strutturare la tabella.
Benissimo. E allora come pensi di organizzare la tabella commenti? Utilizzerai anche la colonna "nprocomm", per considerare un commento per ciascuna riga della gridview,  oppure hai deciso di creare un commento unico da splittare ogni volta che ti serve, nella gridview e nel documento in  stampa? Mi occorre capire per riprendere il concetto relativamente ai commenti di inizio e fine documento.

Citazione
L'unico dubbio che mi è rimasto come ti ho esposto nella risposta precedente, è come fare a distinguere le righe "commento" dalle righe "articolo" quando  devo inserire nel DB i dati, se mi puoi dare qualche dritta.
Questa volta sono io a non capire la domanda, anche perchè non so cosa usi tu come input di caricamento del DB. Se esso è costituito dalle righe della gridview, mi pare che la tua griglia riporti nelle colonne "Cd. Art." e "Rif. Articolo" valori solo quando viene riempita una riga di tipo "articolo", mentre,  in presenza di commento, per ciascuna riga di tipo "commento", le caselle relative alle suddette colonne ("Cd. Art." e "Rif. Articolo" ) sono vuote. L'impostazione già data va bene e va mantenuta. Ciò ti permetterà, in assenza di valori in dette celle, di collegare ogni riga di commento  all'ultimo "Cd. Art." presente nella griglia. Forse hai un'idea diversa?

Ora vorrei capire una cosa relativamente alle righe di commento di inizio e fine gridview. Immagino che la riga di commento di inizio griglia non sia legata ad alcun articolo, bensì al documento. È vero?
Mentre le righe di commento di chiusura sono quelle riferite all'ultimo articolo immesso nella griglia, oppure dopo l'ultimo articolo immesso e le eventuali rispettive righe di commento, possono essere state inserite altre righe di commento, riferite quindi al Documento?
Ciao.


Titolo: Re: Memorizzare commenti dai documenti
Inserito da: tornu - 12 Aprile 2010, 21:59:09
Benissimo. E allora come pensi di organizzare la tabella commenti? Utilizzerai anche la colonna "nprocomm", .....
Come vedi dagli orari dei miei post riesco a lavorare al programma praticamente solo la sera, il lavoro in questo periodo mi impegna parecchio, quindi la tabella non la ho ancora impostata, appena pronta la posto così mi dai un parere.
Sì, utilizzerò la colonna "nprocomm" perchè da quello che ho capito dalle tue spiegazioni mi sembra la via più pratica e semplice da realizzare.

Questa volta sono io a non capire la domanda, anche perchè non so cosa usi tu come input di caricamento del DB....
Ti allego uno stralcio del codice che uso per inserire i dati di testata documento e righe documento, così ti fai un'idea del metodo che uso.
Codice: [Seleziona]
PUBLIC SUB itedoc() ' Avviata da BtnSave
  DIM idResult, docResult AS Result

  SELECT CASE $Tpdoc
    CASE "FI" ' Fattura Vendita
' Se i campi 'Data Trasporto' e 'Ora Trasporto' non contengono dati vengono inseriti quelli di compilazione
      IF ValDtTrasp.Value = "" THEN
        ValDtTrasp.Value = Date(Now)
      ENDIF

      IF ValHrTrasp.Value = "" THEN
        ValHrTrasp.Value = Time(Now)
      ENDIF

' Inserisce la testata documento
      docResult = MGlobal.db.Create("tedoc")
      docResult["cdcli"] = iCdcli
      docResult["id_paga"] = iCdtpag
      docResult["tpdoc"] = $Tpdoc
      docResult["nrdoc"] = TxtNrdoc.Text
      docResult["dtdoc"] = ValDtDoc.Value
      docResult["dtrdoc"] = ValDtReg.Value
      docResult["causale"] = CmbCausale.Text
      docResult["imp1"] = TxlTotImp.Text
      docResult["aliva1"] = iPciva
      docResult["iva1"] = TxlTotIva.Text
      docResult["tnepag"] = TxlTotImp.Text
      docResult["totdoc"] = TxlTotDoc.Text
      docResult["consegna"] = CmbTrasporto.Text
      docResult["spedizione"] = TxtPorto.Text
      docResult["cdvet"] = iCdvet
      docResult["dttrasp"] = ValDtTrasp.Value
      docResult["ortrasp"] = ValHrTrasp.Value
      docResult["nrcolli"] = TxtNrColli.Text
      docResult["asbeni"] = CmbAspBeni.Text
      docResult["stelab"] = "D"
      docResult.Update
      MGlobal.db.Commit

' Inserisce una pausa
      WAIT

' Seleziona l'id dell'ultimo inserimento nella tabella tedoc
      idResult = MGlobal.db.Exec("SELECT LAST_INSERT_ID()AS nrdoc2")
      idTedoc = idResult!nrdoc2
      MGlobal.db.Close

' Avvia la routine inserimento righe documenti vendite
      righedocv()
  END SELECT
END

PUBLIC SUB righedocv() ' Avviata da itedoc()
  DIM vResult AS Result
  DIM iRow AS Integer

' Inserimento righe documenti vendita nella tabella ridoc
  FOR iRow = 0 TO (GvwDoc.Rows.Count - 1)
    vResult = MGlobal.db.Create("ridoc")
    vResult["id_tedoc"] = idTedoc
    vResult["tpdoc"] = $Tpdoc
    vResult["dtdoc"] = ValDtDoc.Value
    vResult["cdcli"] = iCdcli
    vResult["id_cdart"] = GvwDoc[iRow, 0].Text
    vResult["qteva"] = GvwDoc[iRow, 4].Text
    vResult["pnven"] = Format((Val(GvwDoc[iRow, 5].Text) * 100) / (100 + Val(GvwDoc[iRow, 7].Text)), "#0.00")
    vResult["valriga"] = Format((Val(GvwDoc[iRow, 6].Text) * 100) / (100 + Val(GvwDoc[iRow, 7].Text)), "#0.00")
    vResult["aliva"] = GvwDoc[iRow, 7].Text
    vResult.Update
    MGlobal.db.Commit
'     MGlobal.db.Close
  NEXT
END

....Se esso è costituito dalle righe della gridview, mi pare che la tua griglia riporti nelle colonne "Cd. Art." e "Rif. Articolo" valori solo quando viene riempita una riga di tipo "articolo", mentre,  in presenza di commento, per ciascuna riga di tipo "commento", le caselle relative alle suddette colonne ("Cd. Art." e "Rif. Articolo" ) sono vuote. L'impostazione già data va bene e va mantenuta. Ciò ti permetterà, in assenza di valori in dette celle, di collegare ogni riga di commento  all'ultimo "Cd. Art." presente nella griglia.....
Hai intuito perfettamente come utilizzo la GridView.

.....Forse hai un'idea diversa?
Assolutamente no, il percorso intrapreso mi sta benissimo.

Ora vorrei capire una cosa relativamente alle righe di commento di inizio e fine gridview. Immagino che la riga di commento di inizio griglia non sia legata ad alcun articolo, bensì al documento. È vero?
Verissimo.

Mentre le righe di commento di chiusura sono quelle riferite all'ultimo articolo immesso nella griglia, oppure dopo l'ultimo articolo immesso e le eventuali rispettive righe di commento, possono essere state inserite altre righe di commento, riferite quindi al Documento?
Giusto.
Quasi quasi non hai più bisogno delle mie spiegazioni, hai capito ciò che voglio ottenere alla perfezione. ;)
Ciao, e grazie ancora.
Titolo: Re: Memorizzare commenti dai documenti
Inserito da: Picavbg - 13 Aprile 2010, 00:00:48
Hai intuito perfettamente come utilizzo la GridView.
Va bene; quindi, assodato che crei i record delle tabelle del Db coi dati contenuti nella gridview, ora resta che io capisca bene la tua risposta all'ultima mia domanda del precedente post:
Citazione
Mentre le righe di commento di chiusura sono quelle riferite all'ultimo articolo immesso nella griglia, oppure dopo l'ultimo articolo immesso e le eventuali rispettive righe di commento, possono essere state inserite altre righe di commento, riferite quindi al Documento?
Giusto.
Quasi quasi non hai più bisogno delle mie spiegazioni, hai capito ciò che voglio ottenere alla perfezione. ;)
Ciao, e grazie ancora.
Infatti non è vero che ho capito, perchè la tua affermazione "Giusto", conferma la prima parte della mia domanda? O, piuttosto conferma la sua seconda parte?
Formulo meglio la domanda:
le righe di commento di chiusura:
1) sono quelle riferite all'ultimo articolo immesso nella griglia?
2) sono state inserite altre righe di commento, dopo l'ultimo articolo con le sue righe di commento, perciò quelle inserite alla fine sono riferite al Documento?
Ciao.




Titolo: Re: Memorizzare commenti dai documenti
Inserito da: tornu - 13 Aprile 2010, 00:50:45
Formulo meglio la domanda:
le righe di commento di chiusura:
1) sono quelle riferite all'ultimo articolo immesso nella griglia?
2) sono state inserite altre righe di commento, dopo l'ultimo articolo con le sue righe di commento, perciò quelle inserite alla fine sono riferite al Documento?
Ciao.
Scusa ho interpretato male la tua risposta.
I casi che hai esposto (Punto 1 e 2) si possono verificare entrambi nell' uso quotidiano di un gestionale, con questa ultima possibilità  (Punto 2) se si riesce a gestirla abbiamo praticamente toccato tutti i casi in cui i commenti possono essere inseriti in un documento, riassumendo:
1) Commento di testata legato al documento
2) Commento legato all'articolo inserito successivamente all' articolo stesso
3) Commento di chiusura legato al documento, che può essere unico oppure successivo al commento legato all' ultimo articolo in GridView.



Titolo: Re: Memorizzare commenti dai documenti
Inserito da: leo72 - 13 Aprile 2010, 15:02:05
@tornu:
ma hai letto la mia risp in cima a questa pagina? mi pare che soddisfi bene e semplicemente le tue necessità.
Credi una tabella contenente le righe dei documenti così che poi puoi mettere i commenti in qualunque punto del tuo documento.
Titolo: Re: Memorizzare commenti dai documenti
Inserito da: leo72 - 13 Aprile 2010, 15:07:46
Ecco un esempio.
Tralascia che io abbia solo 2 codici articolo (D per Descrizione di una voce con prezzi e C per commenti: in quella versione del gestionale non ho necessità di gestire gli articoli).
Titolo: Re: Memorizzare commenti dai documenti
Inserito da: Picavbg - 13 Aprile 2010, 15:12:06
abbiamo praticamente toccato tutti i casi in cui i commenti possono essere inseriti in un documento, riassumendo:
1) Commento di testata legato al documento
2) Commento legato all'articolo inserito successivamente all' articolo stesso
3) Commento di chiusura legato al documento, che può essere unico oppure successivo al commento legato all' ultimo articolo in GridView
Bene. Un'ultima cosa: i tuoi codici articolo (Table_Righe!id_cdart), in base al contenuto che leggo negli esempi da te forniti, dovrebbero contenere valori alfanumerici. Quindi si potrebbe pensare, per i commenti di testata e di chiusura a campi, sempre di 9 crt (caratteri),  che iniziano con valori convenzionali fuori dalla standard di codifica degli articoli:
Citazione
Es.:
A000A0001 - per la 1^ riga di commento di testata)
A000A0002 - per la 2^ riga di commento di testata)
..................
A000A9999 - per la 9999^ riga di commento di testata)   
e
Z000Z0001 - per la 1^ riga di commento di chiusura)
..................
Z000Z9999 - per la 9999^ riga di commento di chiusura)
Fammi sapere.  :D
Ciao.
Titolo: Re: Memorizzare commenti dai documenti
Inserito da: tornu - 13 Aprile 2010, 21:27:03
@tornu:
ma hai letto la mia risp in cima a questa pagina? mi pare che soddisfi bene e semplicemente le tue necessità.
Credi una tabella contenente le righe dei documenti così che poi puoi mettere i commenti in qualunque punto del tuo documento.
Si, leo ho letto le tue risposte (le leggo sempre, ci mancherebbe, non posso ignorarti  :)), non è che non ho preso in considerazione i tuoi suggerimenti, coinvolto dalla discussione con Picavbg non ti ho risposto per "distrazione".
Comunque mi sembra che stiamo andando praticamente verso una soluzione che se non ho (per l'ennesima volta) capito male è la stessa che hai adottato tu.
Intervieni quando vuoi con suggerimenti o critiche, saranno sempre bene accette dal sottoscritto, tutto serve per apprendere e migliorarsi.

@Picavbg:
Bene. Un'ultima cosa: i tuoi codici articolo (Table_Righe!id_cdart), in base al contenuto che leggo negli esempi da te forniti, dovrebbero contenere valori alfanumerici.....
No, ai interpretato male, oppure con tutte le immagini che ho allegato ti ho portato fuori strada.
Se torni indietro di qualche risposta troverai due allegati dove ho detto che sono il form e il documento stampato originali che uso realmente, gli allegati delle altre risposte ignorali, mi servivano per darti l'dea pratica.

Se guardi il form ho spiegato con delle didascalie i campi principali e vedrai che la colonna "Cd. Art." è popolata dal DB con i dati del campo id_cdart che è "integer auto_increment", mentre il campo "Rif. Articolo" è un campo varchar popolato con i codici reali degli articoli. Spero di essere stato chiaro, altrimenti chiedi pure.
ciao
Titolo: Re: Memorizzare commenti dai documenti
Inserito da: leo72 - 13 Aprile 2010, 21:31:23
Mi pare che stiate facendo la cosa un po' troppo complicata. Come ti ho suggerito io non devi stare a guardare se il commento è all'inizio delle descrizioni, a metà, se legato alla riga precedente ecc... Lo metti dove e quando ti pare, tanto poi salvi le descrizioni in una tabella a parte per cui hai lì tutte le righe ordinate del documento.

Con questo sistema puoi anche fare documenti da 100 pagine, non ti devi preoccupare di quante righe stai mettendo nel DB. Ci penserà il codice a dividerle su più pagine quando riapri il documento in lettura e/o in stampa.
Titolo: Re: Memorizzare commenti dai documenti
Inserito da: Picavbg - 14 Aprile 2010, 00:01:56
@ Leo:
Citazione
Mi pare che stiate facendo la cosa un po' troppo complicata. Come ti ho suggerito io non devi stare a guardare se il commento è all'inizio delle descrizioni, a metà, se legato alla riga precedente ecc... Lo metti dove e quando ti pare, tanto poi salvi le descrizioni in una tabella a parte per cui hai lì tutte le righe ordinate del documento.
Prima di dare un consiglio a tornu ho guardato il contenuto delle due tabelle di cui già dispone ed ho visto che la Tabella "righe si documento" non dispone di una colonna di tipo "Descrizione", dove potere inserire le righe di commento, al posto della descrizione dell'articolo. Avrai certamente notato che abbiamo ragionato sull'eventualità di aggiungere un'ulteriore colonna in detta tabella, ma vista l'impossibilità  previsionale della quantità di commenti che da gestire e soprattutto la non snellezza della funzione split (secondo il mio modestissimo puinto di vista), ho consigliato la costruzione della nuova tabella "Commenti". Io non vedo alcuna difficoltà di gestione tabellare. Infatti, basta, all'apertura del documento, griglia o stampa  che sia, interrogare la tabella commenti per conoscere se, per il documento in trattamento, sia presente un gruppo di righe di commento, diciamo di testata, e portarlo in output; poi, per tutte le righe di dettaglio, richiamando semplicemente le righe di commento, legate allo stesso codice-articolo, si produce l'output solo se le righe sono presenti; Infine, per le righe di commento di fine-documento, vale lo stesso ragionamento fatto per le righe di testata. E l'output è bello che pronto.
Secondo me, si tratta semplicemente di un metodo di applicazione, diverso sicuramente da quello da te suggerito, ma che porta allo stesso risultato.
Io credo che tornu abbia ragionato su tutto quello di cui è stato detto e che si sia indirizzato su un utilizzo confacente alle sue necessità. È giusta, comunque, la tua osservazione, perchè così possa ulteriormente rivedere la logica organizzativa del tutto ed optare per la soluzione più pratica. Come soluzione più pratica, intendo quella che rende l'operativià più semplice, non quella di rendere più semplice la stesura della parte di programma occorrente; quest'ultima, infatti, lo sappiamo, si svolge una volta e dopo svolta risulta una fatica già dimenticata perchè l'importante è gestire agevolmente l'input ripetitivo dei dati.

@ tornu:
Citazione
No, ai interpretato male, oppure con tutte le immagini che ho allegato ti ho portato fuori strada.
Se torni indietro di qualche risposta troverai due allegati dove ho detto che sono il form e il documento stampato originali che uso realmente, gli allegati delle altre risposte ignorali, mi servivano per darti l'dea pratica.
Ho riguardato tutti i post ed ho trovato complessivamente solo tre tipi di documento, di cui uno è sicuramente un esempio, infatti riporta nelle testate di colonna le diciture "ITEM x", ma gli altri due sono:
- una, la  form con la sua gridview, dove effettivamente il cod-articolo è un numero;
- l'altra, la stampa di un documento cartaceo, dove la colonna "articolo" presenta sempre lo stesso codice alfabetico di tre crt seguito un codice di 9 crt che potrebbe essere il "rif.articolo".
Da ciò, apparentemente, il cod.articolo sembrerebbe un campo alfanumerico, tuttavia se tu mi dici che il campo è definito "integer", essendo l'integer un tipo di dato di 4 byte, con un estensione numerica compresa fra "-2147483648" e "+2147483647 ", possiamo, per esempio, pensare ad un codice-articolo-commento-testata --> 11111111 ed ad un codice-articolo-commento-chiusura --> "99999999".
Se l'idea non fosse di tuo gradimento, per qualche motivo a me non chiaro, scegli tu un'altra combinazione. :)
Ciao.
Titolo: Re: Memorizzare commenti dai documenti
Inserito da: leo72 - 14 Aprile 2010, 10:13:06
@picavbg:
se avete scelto questa strada avrete sicuramente valutato i pro ed i contro per cui son sicuro che abbiate scelto la strada più conveniente :-)
Titolo: Re: Memorizzare commenti dai documenti
Inserito da: tornu - 14 Aprile 2010, 21:19:27
Ho riguardato tutti i post ed ho trovato complessivamente solo tre tipi di documento, di cui uno è sicuramente un esempio, infatti riporta nelle testate di colonna le diciture "ITEM x", ma gli altri due sono:
- una, la  form con la sua gridview, dove effettivamente il cod-articolo è un numero;
- l'altra, la stampa di un documento cartaceo, dove la colonna "articolo" presenta sempre lo stesso codice alfabetico di tre crt seguito un codice di 9 crt che potrebbe essere il "rif.articolo".
Da ciò, apparentemente, il cod.articolo sembrerebbe un campo alfanumerico, tuttavia se tu mi dici che il campo è definito "integer", essendo l'integer un tipo di dato di 4 byte, con un estensione numerica compresa fra "-2147483648" e "+2147483647 ", possiamo, per esempio, pensare ad un codice-articolo-commento-testata --> 11111111 ed ad un codice-articolo-commento-chiusura --> "99999999".
Se l'idea non fosse di tuo gradimento, per qualche motivo a me non chiaro, scegli tu un'altra combinazione. :)
Ciao.
Dopo la benedizione di leo  ;) andiamo avanti, per evitarti lavoro inutile ti riposto il form "originale" e la stampa "originale che ne deriva.

Come vedi nel form che utilizzo per l'inserimento dei dati la prima colonna a sx "Cd. Art." viene popolata dal campo id_cdart del DB che proviene da una tabella dove gestisco l'anagrafica articoli e come chiave esterna lo collego alla tabella "ridoc", il campo id_cdart è di tipo integer auto_increment lunghezza 6.

Sempre nel form la colonna "Rif. Articolo" è popolata dai codici originali dei fornitori che proviene sempre dalla tabella anagrafica articoli e inseriti sempre tramite la chiave esterna id_cdart, il campo è di tipo varchar lunghezza 16.

Perfettamente d'accordo nel distinguere i tipi commento.
Titolo: Re: Memorizzare commenti dai documenti
Inserito da: Picavbg - 14 Aprile 2010, 22:30:14
se avete scelto questa strada avrete sicuramente valutato i pro ed i contro per cui son sicuro che abbiate scelto la strada più conveniente :-)
Scusa se ritorno sull'argomento, ma la scelta è stata sempre e soltanto operata da tornu; io ho semplicemente indicato un metodo, nient'altro. Ho capito che a te non piace, ma lungi da me la volontà di forsazre una scelta; però, dai, non è una brutta soluzione. è semplicemente un pò più impegnativa dal punto di vista programmazione; mi pare però che ormai si è a buon punto.
Ciao.

@tornu:
Citazione
Come vedi nel form che utilizzo per l'inserimento dei dati la prima colonna a sx "Cd. Art." viene popolata dal campo id_cdart del DB che proviene da una tabella dove gestisco l'anagrafica articoli e come chiave esterna lo collego alla tabella "ridoc", il campo id_cdart è di tipo integer auto_increment lunghezza 6.
Bene; vedo che hai capito e che sei pronto alla modifica. Tieni conto che  le righe di commento di testata e di chiusura vanno gestiti ... "fuori dalle righe"  ;)
Hai letto il procedimento di utilizzo della Tabella!Commenti nel mio precedente post?
Prova e facci sapere.  :D
Ciao.
Titolo: Re: Memorizzare commenti dai documenti
Inserito da: leo72 - 15 Aprile 2010, 00:17:48
se avete scelto questa strada avrete sicuramente valutato i pro ed i contro per cui son sicuro che abbiate scelto la strada più conveniente :-)
Scusa se ritorno sull'argomento, ma la scelta è stata sempre e soltanto operata da tornu; io ho semplicemente indicato un metodo, nient'altro. Ho capito che a te non piace, ma lungi da me la volontà di forsazre una scelta; però, dai, non è una brutta soluzione. è semplicemente un pò più impegnativa dal punto di vista programmazione; mi pare però che ormai si è a buon punto.

Difatti in informatica non c'è mai un solo modo di fare le cose. La soluzione che ho adottato io sembra "sempliciotta" ma alla fine è facile da implementare e... fa il suo sporco lavoro :-)
Se poi tornu, per la logica del suo programma, ha adottato un'altra via per giungere alla stessa destinazione, ben venga.  :D
Titolo: Re: Memorizzare commenti dai documenti
Inserito da: Ceskho - 15 Aprile 2010, 00:25:39
...e la cosa ancora più bella è prelevare il meglio di tutti i metodi e crearne uno ancora migliore... ;)
Titolo: Re: Memorizzare commenti dai documenti
Inserito da: Picavbg - 15 Aprile 2010, 14:42:47
...e la cosa ancora più bella è prelevare il meglio di tutti i metodi e crearne uno ancora migliore... ;)
Complimenti per il concetto; sembra un pensiero filosofico. Perchè non lo inserisci da qualche parte ne "Il resto del Pinguino"? ;D
Ciao.
Titolo: Re: Memorizzare commenti dai documenti
Inserito da: tornu - 12 Luglio 2010, 22:35:34
Bene; vedo che hai capito e che sei pronto alla modifica. Tieni conto che  le righe di commento di testata e di chiusura vanno gestiti ... "fuori dalle righe"  ;)
Hai letto il procedimento di utilizzo della Tabella!Commenti nel mio precedente post?
Prova e facci sapere.  :D
Ciao.

Ciao Picavbg, dopo la mia lunga assenza dovuta ad impegni di lavoro (come ho spiegato ad un'altro utente in un'altra sezione del forum), torno sul forum anche se ancora a singhiozzo (spero per breve tempo) e riprendo questa discussione sperando ancora nel tuo aiuto.
Dovrò rinfrescarmi un attimo la memoria su i suggerimenti che mi hai dato in precedenza. Comincio a fare delle prove pratiche (che non avevo fatto, quando mi sono assentato) e ti faccio sapere.