Problema creazione Fatture e gestionale per un ristorante

domenica 09 febbraio 2014 - 12.59
Tag Elenco Tags  C#  |  .NET 4.0  |  Windows 7  |  Visual Studio Express

Foga92 Profilo | Newbie

Ciao a tutti sperando che qualcuno riesca ad aiutarmi espongo il mio problema cercando di essere il più rapido possibile.

Utilizzo VS2012 EXPRESS con .NET framework 4.5.
Sto creando un programma in c# che permette di fare le seguenti cose:
Stampare e memorizzare fatture e ricevute sia pagate che non, mantenere un archivio delle stesse consentendone la stampa in un secondo momento.
Gestire un archivio dei clienti con tutte le informazioni (es. ragione soc. partita iva ecc)

Il funzionamento è il seguente:

Tramite una text box inserisco un tavolo poi se non è già presente e il tavolo risulta valido (casella non vuota e numero inserito) procede a inserire il tavolo in una tabella listatavoli in un database SQL (.mdf di visual studio)
Una volta dato INVIO se tutto va bene ci si sposta in una casella Tasto nella quale è possibile tramite la pressione di un tasto inserire una pietanza completa di prezzo e quantità in una tabella AttesaSaldo che verrà visualizzata in un DGV:
I tasti sono stati programmati tramite una sezione apposita del programma nella quale si manipolano i dati della tabella listatasti nella quale sono riportati i valori (Tasto, Descrizione, Prezzo). Ovviamente per incrementare le quantità è possibile schiacciare più volte un tasto corrispondente e si incrementa il prezzo e la quantità.

Il mio problema sorge nel momento in cui noi proviamo ad incrementare la quantità e il prezzo di un articolo che ha un prezzo con una virgola ES: 1 <nome descrizione> 2,5 l'operazione va a buon fine fino alla seconda volta che si preme poi da il seguente errore:

Eccezione non gestita di tipo 'System.Data.SqlClient.SqlException' in System.Data.dll

Informazioni aggiuntive: Error converting data type varchar to float.

Spiegando brevemente il funzionamento il programma tramite un comando SELECT prende il valore del prezzo della listatasti e lo somma al prezzo che ha lo stesso articolo in AttesaSaldo tutte le variabili sono di tipo Double invece i campi della tabella nel database sono Float (Ho provato a variare queste ultime in vari modi ma il risultato non cambia se non è un errore è un'altro.). una volta aver ricevuto il valore del prezzo finale e aver aggiunto 1 alla quantità, tramite il comando UPDATE aggiorna il record e di conseguenza anche la DGV con il prezzo e la quantità nuova.

Ora ciò che non riesco a capire è: Perchè fino alla seconda volta funziona e alla terza da l'errore? (esempio. se premo 2 volte il tasto 'x' che corrisponde ad una descrizione e ad un prezzo <descizione> 2,5 alla seconda volta tutto va bene aumenta la quantità a 2 e imposta il prezzo a 5, ma quando premo per la terza volta mi esce l'eccezione. Ho provato anche a seguire i valori delle variabili e sono giusti al momento del comando ExecuteNonQuery() le mie variabile prezzo e la quantità hanno valori 3 e 7,5.

Spero che qualcuno riesca ad aiutarmi che ci sto sbattendo la testa da giorni

Un secondo e più semplice problema è il seguente:

Ho impostato dei controlli sulla prima casella (dove si inserisce il tavolo) che valuta se il tavolo è un numero valido per esempio non una lettera e non una casella vuota, ed ho impostato una messagebox con un semplice avviso il mio problema è che ho impostato l'evento keyup con ENTER per confermare l'inserimento del tavolo e se il valore non è valido e quindi compare la messagebox non è possibile schiacciare enter perchè continua a verificare la casella e a far comparire la messagebox all'infinito a meno che non si prema "ESC".

Grazie a mille per il volenteroso che ha voglia di aiutarmi

ridaria Profilo | Expert

verifica le virgole,

che vengono concertite in punti o viceversa.

CIAo
Riccardo D'Aria

Foga92 Profilo | Newbie

Si effettivamente hai ragione. Nel database i prezzi sono con le virgole che vengono poi trasformate in punti. Piccola curiosità come posso farle tornare virgole al momento dell'inserimento nella query?

Ho provato a trasformare il tutto in stringa usare poi il .Replace(".",",") ma poi riconvertendolo in double la cosa torna come prima ovviamente.
Stavo pensando non c'è un comando da utilizzare con il double tipo replace?
Ho visto che nel tipo di dato del database c'è anche money e smallmoney qesti come funzionano esattamente? ho visto che hanno 3 zeri. magari con una piccola modifica al database sistemo le cose.

Sai anche per caso come risolvere il problemino che ho scritto nell'ultimo paragrafo?

Grazie per la risposta

Foga92 Profilo | Newbie

Ho risolto impostando tutto su decimal(18,2)
...

Ora chiedo qualcuno riesce ad aiutarmi sul mio ultimo problema descritto?

se premo enter per confermare la messagebox di errore mi ricompare e così via

Grazie

ridaria Profilo | Expert

Prego.

Intanto chiudi questo post cliccando su accetta.

Poi ne apri un altro specificando meglio la questione.

CIAO
Riccardo D'Aria
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5