Autore Topic: [Completato] Programma gestionale vendite ordini consegne  (Letto 40919 volte)

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Programma gestionale vendite ordini consegne
« Risposta #105 il: 18 Settembre 2009, 12:19:21 »
Il file che ho postato non è altro che una classe.

Per poter leggere e fare quello che devi fare, devi, all'interno del tuo codice, creare una variabile di tipo Csv (nome della classe), aprire la connessione con il file (OpenFile), leggere i dati con un loop (fino a che Read non ritorna False), chiude la connessione con il file (Close).

Un esempietto:

Codice: [Seleziona]


DIM csv AS NEW pgCsv()
DIM dati as String[]

csv.OpenFile($filename)
WHILE csv.Read()
  dati = csv.Data
WEND
csv.Close()



Ora devo scappare, appena ritorno e se necessario ti dò qualche altra info...

Bye

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: Programma gestionale vendite ordini consegne
« Risposta #106 il: 18 Settembre 2009, 21:23:54 »
Grazie, gentilissimo!!
Visto così mi sembra più familiare :-D
Metto a letto i bimbi e poi provo, grazie

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Programma gestionale vendite ordini consegne
« Risposta #107 il: 21 Settembre 2009, 10:32:45 »
Ritornato un pò in ritardo, ma ritornato...

Continuando il mio post precedente, devo farti notare (e si vede anche nel codice), che ogni riga letta con Read, viene ritornata splittata in un array stringa (Data).
Ovviamente la classe non tratta la traduzione e la conversione dei dati, e la memoprizzazione nel database; questa fase devi farla tu.

In realtà, sarebbe anche possibile implementare la classe, in modo che i dati letti vengano direttamente salvata in una tabella, ma al momento questo esula, a mio avviso, dallo scopo del singolo oggetto. Un'idea è quella di implementare un'oggetto ad-hoc per la conversione e il salvataggio di dati sul database, passandogli appunto l'array ritornato da CSV, e che converta opportunamente le singole stringhe in valori corrispondenti alle colonne della tabella.
Ma questa è un'altra storia...

:-)

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: Programma gestionale vendite ordini consegne
« Risposta #108 il: 22 Settembre 2009, 00:32:54 »
Ciao, non preoccuparti, nessun ritardo anch'io ho poco tempo e qualche sera quando metto a letto i piccoli..ci resto anch'io :sonno:
Ci ho provato ancora, ma proprio non ci arrivo  :eh:
Io ti avrei preparato un esempio, anzi l'ho solo modificato. E' l'esempio di Fsurfing "Gambas_e_sqlite". L'ho preparato per inserire il file csv. I campi sono Nome Cognome Indirizzo. c'è anche il file csv.
Solo se hai tempo.
Ciao grazie

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Programma gestionale vendite ordini consegne
« Risposta #109 il: 22 Settembre 2009, 16:33:42 »
Ho dato un'occhiata al volo, tenendo conto che al momento non ho Gambas a disposizione, e questo è il risultato:

1) la variabile $conn è illogico inserirla in ogni funzione; la cosa può essere sistemata, spostando la sua dichiarazione in modo che questa risulti una proprietà della classe, ovvero, basta spostarla ad inizio file (dopo la nota <' Gambas class file>). Dopo di che, nel metodo _new(), può essere istanziata (creata), completata dei parametri di connessione, quindi aperta. In questo modo ogni metodo può accedere a questa proprietà, sicuro che questa sia valida e già aperta, e usando le sue caratteristiche a seconda dei casi. Ovviamente bisogna ric ordarsi di chiudere la connessione alla chiusura della Form, anche se (se ricordo bene), questo viene comunque fatto da Gambas. Ad ogni modo, può fare l'apertura della connessione dentro Form_Open(); la cosa cambia a seconda della logica adottata, ma questo si può analizzare dopo...

2) A seguito di quanto sopra, puoi comunque eseguire apertura di connessione, query e chiusura in ogni metodo, tanto l'oggetto è già stato creato, quindi non hai bisogno di scrivere più volte lo stesso codice, e la gestione diventa più snella.

3) Il codice che hai inserito nell'evento click di Button6, manca solo del trasferimenti dei dati letti dal file CSV nella Griglia o in variabili da utilizzare per l'inserimento nel database. Non ho approfondito tutta la logica scritta nella Form, ma presumo che tu voglia visualizzare il contenuto del file, permettendone la modifica (e non), salvare i dati nella tabella. Se questo è l'intento, a parte forse qualche ridondanza nel codice, penso ti basi solo inserire due righe di codice nel Button6_Click per la lettura delle info dal file.

Spero di essere stato abbastanza chiaro...

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: Programma gestionale vendite ordini consegne
« Risposta #110 il: 23 Settembre 2009, 13:39:45 »
Ciao
Ho preparato l'esempio un po' in fretta, in effetti sul mio progetto fccio così:
Ho un modulo chiamato “ModMain” (l'ho trovato sempre qua nel forum”

Codice: [Seleziona]


PUBLIC $conn AS NEW Connection

PUBLIC PROCEDURE Connect()
   $conn.Close  
   $conn.Type = "mysql"
   $conn.Host = "localhost"
   $conn.Login = "root"
   $conn.port = "3306"        
   $conn.Name = "Gestione"
   $conn.Password = "MIAPASSWORD"
   $conn.Open
END

PUBLIC SUB Main()
Connect() 'avvia la procedura per la connessione
END



Riempio la grid con questo codice:

Codice: [Seleziona]

PUBLIC MyRS AS Result

PUBLIC SUB riempigrid()
    DIM sql AS String
    DIM i AS Integer
    DIM cal AS String

 
    GridView1.Clear        
          sql = "select * from dettagli WHERE idpreventivo  LIKE '%" & tbidpreventivo.Text & "%'" " " '  tbidpreventivo è l'id per filtrare i dettagli solo per questo preventivo
          sql = sql & "order by iddettaglio"                        
           MODMain.Connect()
           MyRS = MODMain.$conn.Exec(sql)                    
          IF MyRS.Available = TRUE THEN    
                GridView1.Mode = Select.multiple
                GridView1.Header = GridView1.Horizontal                
                GridView1.Columns.Count = 10
               
                GridView1.Columns[0].Width = 20
                GridView1.Columns[1].Width = 20
                GridView1.Columns[2].Width = 80
                GridView1.Columns[3].Width = 400
                GridView1.Columns[4].Width = 80                
                GridView1.Columns[5].Width = 20
                GridView1.Columns[6].Width = 20
                GridView1.Columns[7].Width = 20
                GridView1.Columns[8].Width = 80
                GridView1.Columns[9].Width = 80
                GridView1.Rows.Height = 20
                               
                GridView1.Columns[0].Text = ""
                GridView1.Columns[1].Text = "Q.tà"
                GridView1.Columns[2].Text = "Codice"
                GridView1.Columns[3].Text = "Descrizione"
                GridView1.Columns[4].Text = "Prezzo"
                GridView1.Columns[5].Text = "IVA"
                GridView1.Columns[6].Text = "Aum"
                GridView1.Columns[7].Text = "Sco"
                GridView1.Columns[8].Text = "Prezzo tot"
                GridView1.Columns[9].Text = "Fornitore"
                GridView1.Rows.Count = MyRS.Count        
                i = 0
                FOR EACH MyRS                          
                  GridView1[i, 0].Picture = ""
                  GridView1[i, 1].Text = MyRS!quantita  
                  GridView1[i, 2].Text = MyRS!codice  
                  GridView1[i, 3].Text = MyRS!descrizione  
                  GridView1[i, 4].Alignment = 2
                  GridView1[i, 4].Text = MyRS!prezzo
                  GridView1[i, 5].Text = MyRS!iva
                  GridView1[i, 6].Text = MyRS!maggiorazione
                  GridView1[i, 7].Text = MyRS!sconto
                  GridView1[i, 8].Alignment = 2
                  cal = (((MyRS!prezzo * MyRS!quantita) * ((MyRS!iva / 100) + 1)) * ((MyRS!maggiorazione / 100) + 1)) * (1 - (MyRS!sconto / 100))
                  GridView1[i, 8].Text = Format(cal, "######0.00")
                  GridView1[i, 9].Text = MyRS!fornitore
                  INC i          
                NEXT
               
          ELSE
                  GridView1.Columns.Count = 1
                  GridView1.Rows.Count = 1
                  GridView1[0, 0].Text = "Nessun dato"  
          ENDIF

                     
  CATCH  
  Message.Error(Error.Text)  
END



Un dubbio: MODMain.Connect() io lo uso in ogni funzione. E' giusto o devo metterlo in “Form_Open” ?

Mi sono guardato bene la tua classe, purtroppo io non ci capisco molto, però ho capito che si può scegliere il carattere separatore colonna, la prima riga per il nome colonna .. però più in là non riesco andare.

Il lavoro che vorrei fare io sarebbe di accodare il csv nella mia tabella "dettaglilistino" . Il file CSV deve essere preparato prima, penso che qualsiasi utente con una guida (che preparerò) sia capace di convertire con OpenOffice un file xls. Poi dalla maschera “Listini” scegliendo il file mi copierà i dati del csv (però dovrò riempiere anche i campi Idlistino e Idfornitore con i valori che ci saranno nella maschera al momento dell'importazione)

Spero di essermi spiegato meglio adesso, sono un po' casinista di natura :-)

Ti ringrazio tanto del tempo che mi dedichi

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Programma gestionale vendite ordini consegne
« Risposta #111 il: 23 Settembre 2009, 14:50:47 »
[OT]
Scusate se esco dai ranghi delle richieste ma leggendo il codice ho notato una cosa: quando fai riferimento ai dati di login vengono scritti direttamente...più precisamente
Codice: [Seleziona]

   $conn.Login = "root"
   $conn.Password = "MIAPASSWORD"  


Questo non è un pò controproducente per la sicurezza? Non dovresti creare un form in cui l'utente inserisce login-name e password?
/OT]

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: Programma gestionale vendite ordini consegne
« Risposta #112 il: 23 Settembre 2009, 16:13:27 »
@ceskho
Si è vero, in realtà nel progetto questi dati vengono "pescati" da un file (mi avevi fatto tu l'esempio per scrivere e leggere un file txt :-D ). Per semplificare la lettura del codice ho scritto così

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Programma gestionale vendite ordini consegne
« Risposta #113 il: 23 Settembre 2009, 16:44:03 »
ok..allora scusami tanto per l'offtopic...ma anche così la sicurezza è blanda poichè un file di testo può essere benissimo prelevato e letto con semplicità assoluta...secondo me dovresti creare un form che chieda i dati di login ogni volta...in questo modo non salvi dati sensibili da nessuna parte.

So che per l'utente finale potrebbe essere una scocciatura immettere sempre gli stesi dati ma almeno il db dovrebbe essere al "sicuro".

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: Programma gestionale vendite ordini consegne
« Risposta #114 il: 23 Settembre 2009, 17:39:07 »
Citazione
ok..allora scusami tanto per l'offtopic...

Non devi scusarti...grazie dell'interesse invece.
Si hai ragione nel fatto della sicurezza, penso che farò in modo che possa decidere l'utente, cioè, se si decide di entrare direttamente il programma legge i dati, altrimenti si apre il form password così i dati non andranno mai scritti

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Programma gestionale vendite ordini consegne
« Risposta #115 il: 23 Settembre 2009, 17:58:16 »
Bravo....se non hai tempo posso darti una mano...ovviamente il progetto è tuo e lo conosci meglio di me...:-)

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: Programma gestionale vendite ordini consegne
« Risposta #116 il: 23 Settembre 2009, 22:49:31 »
Mi farebbe molto piacere!
All'avvio del programma si apre il form "Principale", là (nella funzione Form_open) viene controllato se è stato creato il file /.Gestione/dati.txt e quindi anche conn.txt che è il file dove scrivo i dati per collegarmi al database. Puoi scaricare l'ultimo aggiornamento che ho fatto qualche giorno fà, nella pagina precedente di questa. Però devi cambiare la funzione Form_open con questa perchè mi ero dimenticato un particolare.
Codice: [Seleziona]

PUBLIC SUB Form_Open()
DIM hFile AS File
DIM Dato1 AS String
label2.Text = Format(Now(), "dddd dd mmmm yyyy")

  IF NOT Exist(User.Home & "/.Gestione/Dati.txt") THEN
   MKDIR (User.Home & "/.Gestione")
   impostazioni.Show
   connessione.Show
  ELSE
  hFile = OPEN User.Home & "/.Gestione/Dati.txt" FOR INPUT
   LINE INPUT #hFile, Dato1
    CLOSE #hFile
   lbintestazione.text = Dato1
  END IF  
  ME.Center
END

Vedi te come fare, mi fido ...ceskhamente :-D

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Programma gestionale vendite ordini consegne
« Risposta #117 il: 24 Settembre 2009, 00:46:02 »
Ehi Golia....la meccanica e la struttura del programma non sono facili da capire per chi lo legge da fuori...c'è un modo per metterci in contatto per parlare? hai skype? sarebbe l'ideale....attendo tue notizie...

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: Programma gestionale vendite ordini consegne
« Risposta #118 il: 24 Settembre 2009, 01:10:17 »
No mi spiace, e non ho neanche il microfono

edit:
Forse posso rubarne uno al lavoro, ti faccio sapere

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Programma gestionale vendite ordini consegne
« Risposta #119 il: 24 Settembre 2009, 01:23:51 »
Ma con skype si può anche parlare come messaggistica istantanea..no vabbè non voglio che ti arrestano/licenziano per un microfono...:-)

Comunque ho fatto quello che dovevo fare....ora ti allego il file...una cosa però:ho creato il form da cui ci si può connettere o si può decidere se far sì che il programma ricordi i dati...non ho fatto riferimento al mio form nel tuo programma poichè non so in quali punti essi dovrebbe essere richiamato. Lascio a te questo compito che conosci il tuo codice...Qualora decidessi di usare il mio form puoi eliminare dal tuo progetto sia il form "connessione" che il modulo "ModMain"...

Spero ti serva....

P.S.

Nel mio form ho usato le icone che ho trovato nel progetto per rendere il tutto omogeneo.....