Legen Sie die numerische (dezimal -) Daten aus textbox-Werte

Ich bin verwirrt, indem Sie das folgende Problem;

Habe ich ein C# (WindowsForms) Anwendung, die ich eine Verbindung zu einer SQL Server-DB und habe kein problem, INSERT, SELECT, UPDATE... bis ich anfing zu arbeiten mit numerischen Daten;

Zweck dieser Anwendung ist die Verwaltung der Mitarbeiter, Ihre Verträge, die Geschwindigkeit der Arbeit, Verträge, Laufzeiten, Stundensätze... und einige lustige Berechnungen mit nichts Magie.

Grundsätzlich, ich brauche, um zu speichern einige Werte (dezimal? doppelt? float?) mit dem format "0000,0000" in meiner DB.

  • In meiner DB, ich habe meine Tabelle mit allen Spalten, wo ich diese erfordern "000,0000" Werte auf dezimal

  • In meine Formulare, die ich noch nicht angegeben, jede spezifische Eigenschaften, um meine Textboxen,

  • Einfügen, benutze ich eine Methode, für die ich definierte dezimal-Argumente

        public void createNewContract(int employeeId, string agency, string role, string contractType, string startDate,
        string endDate, string lineManager, string reportTo, string costCenter, string functionEng, string atrNo, string atrDate, string prNo, string prDate,
        string poNo, string poDate, string comments, decimal duration, decimal workRatePercent, string currency, decimal hourlyRate, decimal value)
    {
        if (conn.State.ToString() == "Closed")
        {
            conn.Open();
        }
        SqlCommand newCmd = conn.CreateCommand();
        newCmd.Connection = conn;
        newCmd.CommandType = CommandType.Text;
        newCmd.CommandText = "INSERT INTO tblContracts (CreatedById, CreationDate, EmployeeId, Role, ContractType, StartDate, "
        + "EndDate, Agency, LineManager, ReportTo, CostCenter, FunctionEng, AtrNo, AtrDate, PrNo, PrDate, PoNo, PoDate, Comments, Duration, WorkRatePercent, Currency, HourlyRate, Value)"
        + "VALUES ('" + connectedUser.getUserId() + "','" + DateTime.Now.ToString("dd/MM/yyyy hh:mm:ss") + "','" + employeeId + "','" + role + "','" + contractType
        + "','" + startDate + "','" + endDate + "','" + agency + "','" + lineManager + "','" + reportTo + "','" + costCenter + "','" + functionEng + "','" + atrNo + "','" + atrDate + "','" + prNo
         + "','" + prDate + "','" + poNo + "','" + poDate + "','" + comments + "','" + duration + "','" + workRatePercent + "','" + currency + "','" + hourlyRate + "','" + value + "')";
        newCmd.ExecuteNonQuery();
        MessageBox.Show("Contract has been successfully created", "Completed", MessageBoxButtons.OK, MessageBoxIcon.Information);
    }

(durch diese Methode, die ich nur einfügen muss, wie 00,0000 eine Dauer (nb Stunden), Arbeitsgeschwindigkeit Prozentsatz, der Stundensatz (das Geld in einer anderen Währung) und einen Wert (Geld in einer anderen Währung))

  • Zu erfassen, meine Textfelder Werte ein und senden Sie durch meine Methode 'createNewContrat', die ich versucht habe
    Konvertieren.ToDecimal(dies.txtDuration.Text) und viele andere Dinge, die schien gut zu mir, aber ich Schaffe es nicht zu verstehen, die Mechaniker und ich bin sicherlich nicht der mit der meisten praktische/clevere Lösung...

Bekomme ich immer die folgende Fehlermeldung;

System.FormatException: Le format de la chaîne d ' entrée est incorrect. = Das format der Eingabe/Eingabe-string ist falsch

à-System.Anzahl.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)

à-System.Anzahl.ParseDecimal(String value, NumberStyles options, NumberFormatInfo numfmt)

à-System.Konvertieren.ToDecimal(String value)

Was würden Sie empfehlen?

  • Ihre SQL-Anweisung wäre viel sicherer und besser lesbar, wenn es parametrisiert
  • SQL-Injection: Exploits Of A Mom
  • Ich würd dir empfehlen einen Kontrakt anlegen, der Klasse, die als container für alle Felder, anstatt eine Methode mit 20+ Parameter.
  • Cheers Filburt, Beispiel von Bild ist ganz klar :DD
  • Sie sind herzlich willkommen. Auch, weil Sie neu sind, auf StackOverflow, ich möchte Sie informieren, dass Sie upvote gute Antworten-und die Antwort akzeptieren, dass Ihnen geholfen, die meisten durch ankreuzen der tick daneben die Antwort. Auf dieser site wird ein upvote oder eine akzeptierte Antwort zählt als ein "danke".
InformationsquelleAutor Brice | 2012-12-05
Schreibe einen Kommentar