Autore Topic: Progetto gestionale MDI  (Letto 5348 volte)

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Re: Progetto gestionale MDI
« Risposta #15 il: 25 Novembre 2009, 18:16:11 »
Citazione
Penso proprio che te lo ruberò


 :evil:  :evil:  :evil: non si fanno queste cose.

oops dimenticavo che siamo open source
  :-D  :-D

a parte gli scherzi puoi utilizzare tutto quello che ti serve.
se apporto modifiche ti tengo aggiornato.

in un'altro form ho completato delle funzioni semplici ma efficaci sia per l'inserimento di numeri interi e decimali nelle text, sia per convertire qualsiasi stringa in formato decimale per effettuare calcoli e funzioni matematiche, appena ho un pò di tempo te le posto.

per l'offerta di crearmi il database accetto volentieri, ho aperto un post su mysql e ti postero lì la lista delle tabelle e dei campi, inoltre vorrei creare uno script o una funzione che in fase d'installazione mi crei il database.

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Progetto gestionale MDI
« Risposta #16 il: 25 Novembre 2009, 20:56:48 »
Citazione
desadex ha scritto:
inoltre vorrei creare uno script o una funzione che in fase d'installazione mi crei il database.


Io in un mio programma faccio creare la tabella mediante codice al primo avvio del programma...in questo modo sto sicuro che le volte successive non mi crea il database. Se ti serve ti dico come ho fatto.

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: Progetto gestionale MDI
« Risposta #17 il: 25 Novembre 2009, 22:05:17 »
Se guardi l'esempio di tableview che avevo postato io, con con sqlite, crea il database al primo avvio, cioè se non lo trova lo crea. Però con mysql non ho mai provato.

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Progetto gestionale MDI
« Risposta #18 il: 25 Novembre 2009, 22:13:44 »
Beh con mysql non penso cambi molto...alla fine la base sempre la stessa è....

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: Progetto gestionale MDI
« Risposta #19 il: 25 Novembre 2009, 22:19:03 »
Penso anch'io, forse cambierà qualcosa nelle impostazioni delle query

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Re: Progetto gestionale MDI
« Risposta #20 il: 25 Novembre 2009, 23:00:14 »
@Ceskho
Citazione
Io in un mio programma faccio creare la tabella mediante codice al primo avvio del programma...in questo modo sto sicuro che le volte successive non mi crea il database. Se ti serve ti dico come ho fatto.


ti ringrazio, era proprio quello che mi serviva, mi passi il link o la spiegazione.

@Golia
Citazione
Se guardi l'esempio di tableview che avevo postato io, con con sqlite, crea il database al primo avvio, cioè se non lo trova lo crea. Però con mysql non ho mai provato.


vado a dare un'occhiata

ps. se mi rubi Pdfprint non devi ringraziare me ma MD visto che il progetto era suo, io ho solo fatto delle modifiche.
e non solo Pdfprint è una bomba ma anche pdfwriter, ora che sto cominciando a fare i report mi rendo conto delle sue enormi potenzialità

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: Progetto gestionale MDI
« Risposta #21 il: 25 Novembre 2009, 23:18:25 »
Citazione
ps. se mi rubi Pdfprint non devi ringraziare me ma MD visto che il progetto era suo, io ho solo fatto delle modifiche. e non solo Pdfprint è una bomba ma anche pdfwriter, ora che sto cominciando a fare i report mi rendo conto delle sue enormi potenzialità


Confermo, eccezionale

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Re: Progetto gestionale MDI
« Risposta #22 il: 26 Novembre 2009, 01:13:44 »
posto un piccolo esempio come trattare e calcolare i numeri

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Re: Progetto gestionale MDI
« Risposta #23 il: 26 Novembre 2009, 01:30:33 »
@Golia
ti ringrazio per la tua disponibilità e ne approfitto per chiederti un favore, mi serve un database con mysql con le seguenti caratteristiche.

nome database: AftGold
tabella: clienti

campi: (quelli non specificati fra parentesi sono tutti testo)
IdCliente(numerico indicizzato gestito dal database)
CodClie(numerico)
Tessera
Cognome
Nome
NatoA
StatoDiN
NatoIl
DataNas(data)
Via
Residente
Num
Localita
Provincia
StatoDiR
Documento
DataDiR(data)
NumeroD
TelFis
TelCel
Note(qui mi serve un campo di testo ampio tipo memo per poter inserire molte info)

inoltre mi servirebbe una query che in fase di nuovo cliente interroghi il database nel campo CodClie, e mi trovi il numero più alto in modo che io possa immettere quel numero + 1 per un nuovo cliente.

poi vorrei sapere per i campi data come formattare le date per adattarle al formato usato da mysql

dimenticavo, per i numeri decimali qual'è il formato da usare per i campi?

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Progetto gestionale MDI
« Risposta #24 il: 26 Novembre 2009, 11:57:04 »
Questo è il codice che uso io....Per ora te lo post..se hai dubbi chiedi e ti spiego. OK?

Codice: [Seleziona]
PUBLIC SUB _new()

  '-- se la cartella del database non esiste la crea
  IF NOT Exist(User.Home &/ ".database") THEN MKDIR User.Home &/ ".database"
 
  '-- se il database non esiste lo crea

    '-- Imposta i parametri di connessione al database
    WITH $hConn
      .Type = "sqlite3" ' indicazione del tipo di database da utilizzare
      .Host = sPercorso
      .Login = ""
      .Password = ""
    END WITH
   
    '-- apre la connessione per testare esistenza database
      $hConn.Open
     
    '-- se non esiste crea il nuovo database
    IF NOT $hConn.Databases.Exist(sName) THEN
          $hConn.Databases.Add(sName)
          $hConn.Close
          $hConn.Name = sName
          $hConn.Open()
    '-- da uno scheletro alla tabella interna (vedere testo "info")
          sql = "CREATE TABLE 'tabella' ( 'id' INTEGER PRIMARY KEY, 'nome1' VARCHAR(255) DEFAULT NULL, 'nome2' VARCHAR(255) DEFAULT NULL, 'nome3' VARCHAR(255) DEFAULT NULL, 'nome4' VARCHAR(250) DEFAULT NULL, 'nome5' VARCHAR(4) DEFAULT NULL, 'nome6' VARCHAR(10) DEFAULT NULL, 'nome7' VARCHAR(4) DEFAULT NULL);"
          hres = $hConn.EXEC(sql)
          $hConn.Commit
    END IF
   
    '-- chiude la connessione
    $hConn.Close
   
END


Come puoi notare io controllo l'esistenza della cartella database. Se non c'è vuol dire che è il primo avvio e allora parto con  tutta la creazione altrimenti salta e va ala sub di Form_Open. Inoltre io uso sempre stringhe, per tutti i valori. Se poi tali valori sono numerici eseguo un casting quando prelevo il dato. Spero possa tornarti utile.

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: Progetto gestionale MDI
« Risposta #25 il: 26 Novembre 2009, 16:15:20 »
Ecco, ti ho preparato il database.
In allegato c'è il file di backup che lo carichi con mysql-administrator.

C'è anche un file di testo, (che è il mio segreto per creare in pochissimo tempo un database mysql  :-D ) che ti permette di fare il database con 2 copia incolla da terminale) Sotto la tabella clienti ti ho fatto anche un esempio di una tabella "dettagliclienti", cioè una tabella corelata alla tabella clienti in modo che ti basta cancellare un cliente e mysql ci pensa a cancellare tutti i dettagli legati a quel cliente.

Quasi quasi ti conviene crearti il database da terminale, così decidi tu la dimensione dei campi testo.

adesso devo scappare, per il resto ti dico stasera


edit: avevo troppa fretta, mi sono dimenticato dell'allegato :-)

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: Progetto gestionale MDI
« Risposta #26 il: 26 Novembre 2009, 22:25:12 »
Per le date io uso nel form valuebox con type date, quando riempio il valuebox nel form: vbdatamia.Value = MyRS!datamia  , quando salvo nel db : MyRS!datamia = vbdatamia.Value
Per i decimali uso nel form un semplice textbox e nel db decimal(10,2). Poi ho 2 funzioni (grazie fsurfing) per formattare, una per salvare e una per inserire nel form. Te le passo al più presto come anche la query, adesso scappo ancora
 :-)

edit:
ecco la query
Codice: [Seleziona]

DIM sql AS String
sql = "Select MAX(CodClie) as valormax from clienti"
  MyRS = MODMain.$conn.Exec(sql)
  tb1.Text = MyRS!valormax


per i decimali
Codice: [Seleziona]

PUBLIC SUB formtvaluta(stringa AS String) AS String

DIM p, p1, itemp, itemp1 AS Integer
DIM initstringa AS String

''''sostituzione o aggiunta della virgola

      IF InStr(stringa, ",") <> 0 THEN
          stringa = Replace(stringa, ",", ".")
      ENDIF    
      IF InStr(stringa, ".") <> 0 THEN
          stringa = Replace(stringa, ".", ",")
      ELSE
          stringa = stringa & ",00"
      ENDIF

'''''arrotondamento a due decimali


      p = InStr(stringa, ",")

      p1 = Len(stringa) - p

      initstringa = Left(stringa, p - 1)

      IF p1 = 2 THEN
          stringa = stringa
      ELSE IF p1 <= 1 THEN
          stringa = stringa & "0"
      ELSE IF p1 > 2 THEN
          itemp = CInt(Mid(stringa, p + 1, 2))
          itemp1 = CInt(Mid(stringa, p + 1 + 2, 1))
          IF itemp1 >= 5 THEN
              INC itemp
          ENDIF
          IF itemp = 100 THEN
              stringa = CString(CInt(initstringa) + 1) & ",00"
          ELSE
              stringa = initstringa & "," & CString(itemp)
          ENDIF
      ENDIF

'''''''''''aggiunta puntini ogni 1000      

      IF Len(stringa) >= 7 THEN
        stringa = Mid(stringa, 1, (Len(stringa) - 6)) & "." & Right(stringa, 6)
      ENDIF

      IF Len(stringa) >= 11 THEN
        stringa = Mid(stringa, 1, (Len(stringa) - 10)) & "." & Right(stringa, 10)
      ENDIF

      IF Len(stringa) >= 15 THEN
        stringa = Mid(stringa, 1, (Len(stringa) - 14)) & "." & Right(stringa, 14)
      ENDIF

      IF Len(stringa) >= 19 THEN
        stringa = Mid(stringa, 1, (Len(stringa) - 18)) & "." & Right(stringa, 18)
      ENDIF

RETURN stringa

END

PUBLIC SUB trasfvaluta(stringa AS String) AS String
      ''se scrivo l'importo con separatore decimale "." anzichè ","
      IF Left(Right(stringa, (Len(stringa)) - (InStr(stringa, ".")) + 1), 1) = "." THEN
      stringa = Left(stringa, (Len(stringa) - 3)) & "," & Right(stringa, 2)
      ENDIF
      ''tolgo i punti di separatori migliaia
      stringa = Replace(stringa, ".", "")
      ''cambio il separatore decimale da "," a "." per salvarlo in db
      stringa = Replace(stringa, ",", ".")
  RETURN stringa
END


quando salvo nel database
Codice: [Seleziona]

MyRS!prezzo = Funzioni.trasfvaluta(tbprezzo.Text)


quando riempio il form
Codice: [Seleziona]

tbprezzo.text = Funzioni.formtvaluta(MyRS!prezzo)

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Re: Progetto gestionale MDI
« Risposta #27 il: 26 Novembre 2009, 23:35:33 »
grazie a entrambi.
ora mi metto all'opera e comincio ad inserirlo nel mio progetto

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: Progetto gestionale MDI
« Risposta #28 il: 27 Novembre 2009, 00:00:54 »
Dimenticavo, io mi collego al database così:
Ho un modulo che si chiama ModMain
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 = "miodatabase"
   $conn.Password = "miapassword" '  
   $conn.Open


END

PUBLIC PROCEDURE disconnect()
   $conn.Close  
END

Poi nel form
Codice: [Seleziona]

PUBLIC MyRS AS Result
PUBLIC SUB Form_Open()

MODMain.Connect() 'Apro il database

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Re: Progetto gestionale MDI
« Risposta #29 il: 27 Novembre 2009, 00:15:50 »
che strano mysql và in errore

Codice: [Seleziona]
 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)


che vuol dire?