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

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: Programma gestionale vendite ordini consegne
« Risposta #90 il: 13 Settembre 2009, 00:51:00 »
Ciao, appena tornato e prima di andare a nanna vi faccio subito una domandina  :-)
(Mi mancavate tanto!! :lol:  :lol: )
La questione è importare da file csv.
Ho torvato questo, che si lancia da terminale, l'esempio è di importare dei nomi in un database di nome Rubrica con tabella Amici con campi Cognome;Nome;Numero.

Codice: [Seleziona]

mysql -u root -p

use Rubrica

LOAD DATA LOCAL INFILE '/home/franco/Gestione/export.csv'
INTO TABLE Amici
FIELDS TERMINATED BY ';'
enclosed by '"'
LINES TERMINATED BY '\n'
(Cognome, Nome, Numero);


E fin quà funziona. Però io volevo farlo con una query, è possibile?

Ciao grazie

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: Programma gestionale vendite ordini consegne
« Risposta #91 il: 14 Settembre 2009, 23:03:52 »
Non so più che pesci pigliare..
Avevo pensato di fare una shell con lo script che vi ho scritto sopra. con lo script mi avrebbe copiato i dati da csv a una tabella provisoria di mysql, poi copiavo da tabella a tabella con una semplice query. Però lo script non funziona perchè mi chiede la paasword e la shell si pianta :cry:
Nessuno si ricorda di aver visto qualche esempio per importare da file csv a mysql? :aiuto:

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Programma gestionale vendite ordini consegne
« Risposta #92 il: 15 Settembre 2009, 01:21:05 »
Ma la shell ti chiede la password si root o la password che protegge il database?

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Programma gestionale vendite ordini consegne
« Risposta #93 il: 15 Settembre 2009, 14:56:50 »
Se vuoi usare la shell, devi passargli anche la password, anche se questo và fuori ambito sicurezza.

Non ho letto tutti i messaggi di questo post, ma se l'obiettivo è quello di caricare dati su un db mysql, da un file csv, e deve essere integrato in un programma gambas, ti consiglio di creare e usare Gambas.
Mi spiego meglio...
Se il tuo obiettivo è il semplice caricamento di dati, lo fai a riga di comando, e la cosa finisce lì.
Se invece devi integrare una sorta di funzionalità all'interno di un tuo programma, ti conviene usare le funzionalità del linguaggio Gambas. A parte una minima conoscenza di Gambas, non vedo grandi difficoltà a creare oggetti o funzioni ad-hoc per fare questa operazione.

Sapendo come è composto un file csv, abbiamo le seguenti casistiche di base:

1) ogni riga è un record; le righe sono terminate con LF (ascii linux=Chr(10), dos=Chr(10)+Chr(13));
2) ogni campo è separato dal carattere "virgola"; se il carattere è diverso il file non è un puro csv;
3) se i campi possono contenere caratteri separatori (ovvero la virgola), allora ogni campo è delimitato da doppi apici.

Date queste tre regole, la lettura del file può essere fatta con tre righe di codice, mentre la decodifica un'altro paio ancora. Una volta determinati i campi componenti la riga (puoi salvarli in una Collection o in un array), il salvataggio sul db è altrettanto semplice, ovviamente dopo averne stabilito la connessione. Unico problema potrebbe essere il come formare l'istruzione sql, i cui campi possono essere di formato divero; questo lo puoi determinare leggendo la struttura della tabella di destinazione, e convertendo prima i dati rilevati dalla riga in input, poi formattandoli opportunamente.

Creare apposita procedura con Gambas, ti permette soprattutto di avere maggior controllo su quello che stai inserendo nel database (es. controllare codice validi, o valori nulli).

Sò che forse quello che ho scritto potrebbe non essere perfettamente chiaro, ma sono a disposizione per ulteriori aiuti.

Ciao

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Programma gestionale vendite ordini consegne
« Risposta #94 il: 15 Settembre 2009, 15:16:18 »
Se vuoi passare alla shell la password di root non devi per forza compremettere la sicurezza....infatti (fortunatamente) esistono due importanti strumenti per questo compito infame:

Ksudo
Gsudo

Il primo è per ambienti KDE e il secondo per ambienti GNOME. In pratica sono delle pratiche finestrelle dove immettere la password di root!

Provare per credere

Purtroppo non os se su altri OS esistono questi due programmi ma su *buntu sono sicuro che ci sono....

Offline Gaspare

  • Gambero
  • **
  • Post: 68
    • Mostra profilo
Re: Programma gestionale vendite ordini consegne
« Risposta #95 il: 15 Settembre 2009, 16:25:23 »
per gestire meglio le query e mysql prova ad installare Emma, è un front-end molto semplice e funzionale (e mi pare che importi anche le tabelle dai file .csv)

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Programma gestionale vendite ordini consegne
« Risposta #96 il: 15 Settembre 2009, 16:29:55 »
Non in tutti i sistemi sono installati e attivi di default, per esempio su Fedora no. Diciamo che non tutti i sistemi Linux hanno le stesse impostazioni; alcune sono di base, ma altre sono date all'utente.

Ad ogni modo, anche si utilizzano programmi ad-hot, devi comunque passare per svariati strati di software, di cui uno è proprio Gambas.
E' ovvio che il mio accenno alla sicurezza potrebbe essere fuori luogo, in ambienti come un desktop casalingo, ma sicuramente è comunque soggetto ad attacchi.
La cosa diventa importante se il database contiene dati sensibili; se invece si parla di db di test o di sviluppo... bè... si può tralasciare la parte security...

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Programma gestionale vendite ordini consegne
« Risposta #97 il: 15 Settembre 2009, 16:51:31 »
In verità se si volesse passare la password con "trasparenza" si dovrebbe ricorrere alla crittografia almeno...e qui penso che Leo potrebbe illuminarci tutti come solo una bella torcia a LED bianchi sa fare!!!

Se ionvece provi i programmi che ti ho detto io puoi risparmiarti molte righe di codice e un bel pò di lavoro. Poi se essi non sono presenti nel sistema puoi sempre "avvisare" l'utente di installarli...non bisogna certo perdersi su queste cose...;-)

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: Programma gestionale vendite ordini consegne
« Risposta #98 il: 15 Settembre 2009, 23:04:39 »
Grazie per i suggerimenti di tutti,
La mia prima intenzione era di importare i dati di csv al db mysql direttamente da gambas, però non sapendolo fare volevo provare la scorciatoia della shell.

@md9327
Se non è chiedere troppo questo sarebbe quello che devo fare:

 da un file xls converto in csv, questo è il risultato (CODICE;DESCRIZIONE;PREZZO)

ba45;base da 45;45,23
ba30;base da 30;30,11
pe22;pensile da 22;22,22

al posto della virgola come separatore di campo ho preferito il puntoevirgola perchè ho paura che vada in conflitto con la virgola del campo prezzo

Devo andare a copiare i dati nella tabella "dettaglilistini", i campi interessati sono questi:

codice ----varchar(50)
descrizione ----varchar(250)  
prezzo ----decimal(10,2)
idfornitore ----int(4)
fornitore ----varchar(50)

Codice descrizione e prezzo sono i campi interessati ai dati del csv, mentre idfornitore e fornitore dovranno avere gli stessi valori su tutti i record copiati,
idfornitore = 2
fornitore = "pippo"

Ti faccio anche un esempio di come mi collego al db
Codice: [Seleziona]

          sql = "select * from dettaglilistini"      
          MODMain.Connect()
          MyRS = MODMain.$conn.Exec(sql)



Ho fatto un bel poema... :oops:
Ti ringrazio

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Programma gestionale vendite ordini consegne
« Risposta #99 il: 16 Settembre 2009, 11:12:49 »
Bè, ufficialmente non mi hai chiesto nulla... :-)

In grandi linee, il materiale che hai elencato è quello che ti ho descritto anche io.
La scelta del ";" è personale, quindi non soggetta a repliche.
La conversione da file excel non è possibile, a meno che qualcuno non abbia scritto procedure ad-hoc, cosa quantomeno improbabile.
Una volta convertito a mano, ti trovi con un bel csv, e a questo punto puoi crearti le tue funzionalità di acquisizione.
E' certo che una cosa del genere, fatta direttamente tramite mysql, è sicuramente più veloce; se non ricordo male puoi impostare anche il carattere separatore sulla riga del comando mysql.
Non capisco però il codice di connessione... quello sembra solo una query al db, ma eseguibile solo dopo aver effettuato la connessione vera e propria. Se leggi la doc, o fai un giro dell'area download, credo tu possa trovare qualche esempio di gestione di un db mysql.

P.S.: posso anche pensare di mettr su una classe apposita per l'acquisizione di file csv, ma il risultato non sarà immediato. Ti consiglio al momento di andare avanti con la tua logica...

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Programma gestionale vendite ordini consegne
« Risposta #100 il: 16 Settembre 2009, 17:35:35 »
Nei download stò caricando un file con una classe di lettura file/stream di dati in formato CSV.

Non sò quando sarà disponibile, per cui la posto anche qui...

L'ho scritta ora e funziona.

Vedi se ti può andare bene.

Ciao

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: Programma gestionale vendite ordini consegne
« Risposta #101 il: 16 Settembre 2009, 18:49:37 »
Ti ringrazio dell'esempio, stasera lo guardo bene.
Purtroppo a me serve qualche esempio per capirci qualcosa.
Sto facendo un programma che a me piace tantissimo :-) ma diciamo che l'unica bravura mia è stata nel mettere insieme tanti pezzettini raccolti quà e là, e (sopratutto) l'aiuto dei ragazzi quà del forum.
Presto lo riposterò perchè è praticamente finito, tranne le stampe che devo ancora cominciare a studiare  :oops:
Grazie mille per la disponibilità

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Programma gestionale vendite ordini consegne
« Risposta #102 il: 16 Settembre 2009, 19:16:02 »
Di nulla, siamo qui appunto per aiutare...

:-)

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: Programma gestionale vendite ordini consegne
« Risposta #103 il: 17 Settembre 2009, 22:02:00 »
@md9327
Ho provato a studiarmi bene la classe che mi hai fatto, ma mi spiace io proprio non ci arrivo :oops: .
Non so come richiamare la funzione..penso sia OpenFile & il nome del file csv, e dopo non saprei come tirarmi fuori i dati da $data..
Allora ho pensato che potrei prepararti un bell'esempio con sqlite, tipo una rubrica o qualcosa del genere, il file csv, e se dopo tu ci scrivi il resto.. dopo possiamo metterlo in download come esempio, andrà benissimo per qualche altro testone come me :-)

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: Programma gestionale vendite ordini consegne
« Risposta #104 il: 17 Settembre 2009, 23:55:34 »
Prima di andare avanti col resto vi rimando "Gestione" corretta in vari punti. Pensavo di avere quasi finito (tranne le stampe), invece mi stà appassionando talmente tanto che ho trovato varie chicche da fare :-).

Per chi aveva già scaricato il programma e installato il db di mysql dovrà comunque rifare tutto perchè il db è cambiato. Inoltre ricordo che assieme al file sql c'è una guida per caricare il db in mysql (mysql.pdf)

Ringrazio chi mi ha aiutato