Autore Topic: [risolto]Mysql e Valuebox  (Letto 594 volte)

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
[risolto]Mysql e Valuebox
« il: 16 Settembre 2010, 00:37:10 »
raga sto provando ad inserire dati nel database mysql

in una tabella ho un campo data, il valore viene prelevato da una valuebox settata su date.

Ora quando devo scrivere un nuovo file alla valuebox do, valuebox3.value = Date, la data viene inserita correttamente ma quando salvo nel database scrive 0000-00-00.

Se invece inserisco la data a mano nella valuebox la data viene scritta nel database: 2010-09-16

dove toppo? nel database o nella valuebox?
« Ultima modifica: 16 Settembre 2010, 23:18:25 da dex »

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Mysql e Valuebox
« Risposta #1 il: 16 Settembre 2010, 12:39:40 »
Ad una domanda così, senza un pezzo di codice ad esempio, è difficile rispondere.

Tieni conto che la ValueBox ha anche un'altra proprietà .Text, che contiene il rispettivo valore in formato stringa.

Per iniziare dovresti controllare se, prima di azionare la scrittura su db, il valore restituito dal controllo è corretto.

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: Mysql e Valuebox
« Risposta #2 il: 16 Settembre 2010, 14:38:03 »
Io uso valuebox e data così:
Nel valuebox imposto la proprietà "type" in "date", poi inserisco la data così 15/09/2010
salvo semplicemente con "myrs!data = miovaluebox.value

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Mysql e Valuebox
« Risposta #3 il: 16 Settembre 2010, 16:41:19 »
Tocca stare solo attenti alle impostazioni del server MySQL...

Non vorrei che nel suo caso, siano incompatibili con il formato che gli passa tramite codice...

Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Re: Mysql e Valuebox
« Risposta #4 il: 16 Settembre 2010, 22:10:03 »
dopo varie prove ho scoperto che l'errore deve essere nella stringa sql.
strano che mi salva tutti i valori ad eccezione della data:

ho effettuato delle prove sulla valuebox3 leggendo i valori inseriti sia con codice che a mano:

codice: valuebox3.value = Date  Print 09/16/2010
a mano: Print 09/16/2010

Codice: [Seleziona]
sqls = "insert into egclie (data,cliente,oggetti,motivo,gr,preventivo,note)values( '" & 
           ValueBox3.value & "','" & textbox2.text & "','" & textbox3.text & "','" & textbox4.text & "','" &
           Vgr & "','" & veu & "','" & TextArea1.text & "')"
 
   MyRS = ModMain.MyConn.Exec(sqls)

le variabili vgr e veu sono float e i dati vengono inseriti correttamente.
evidentemente questa stringa non và bene per Mysql.

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Mysql e Valuebox
« Risposta #5 il: 16 Settembre 2010, 22:48:38 »
io per l' inserimento dei dati , preferisco utilizzare i metodi di gambas

Codice: gambas [Seleziona]

hres=$hcon.create("egclie")
hres!data=cdate(valuebox3.value) 'oppure direttamente hres!data=valuebox3.value
hres!cliente=textbox2.text
hres!oggetti=texbox3.text
.....
.....
hres.update
$hcon.commit
$hcon .close

magari sarà solo una mia impressione , però mi sembra più semplice e meno probabile che ci siano errori di "sintassi"

ps: in questo modo per memorizzare un campo data,passi al result un valore "date" di gambas , non una stringa; verrà convertito in automatico in base al setting del db

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Mysql e Valuebox
« Risposta #6 il: 16 Settembre 2010, 23:00:29 »
piccolo  :ot:

utilizzando mysql è probabile che il db sia utilizzata da più postazioni, consiglio quindi ogni volta che si scrive sul db o si legge tabelle "particolari" di aprire una transazione per evitare scritture contemporanee o quasi che potrebbero generare dei problemi

apertura transazione :

nomeconnessione.begin ' apertura transazione

   codice di scrittura record

nomeconnessione.commit ' fine transazione

in caso di errore nel  catch si può inserrire un rollback


CATCH
  messaggio di errore
  nomeconnessione.rollback


Offline dex

  • Gran Maestro dei Gamberi
  • *****
  • Post: 872
    • Mostra profilo
Re: Mysql e Valuebox
« Risposta #7 il: 16 Settembre 2010, 23:18:04 »
risolto con il codice di fsurfing.

grazie anche per la dritta su begin.