2017-11-19 4 views
0

Ich habe eine Vacation Tabelle, die aus drei Spalten wie folgt zusammen:Convert Span Int

Gleichgewicht VARCHAR (20), National_ID VARCHAR (15), NoOfDays VARCHAR (20),

ich dieser Code Tabellenwerte zu aktualisieren:

protected void btnadd_Click(object sender, EventArgs e) 
    { 
     TimeSpan remaindate; 
     DateTime start = DateTime.Parse(tbstartvaca.Text).Date; 
     DateTime end = DateTime.Parse(tbendvaca.Text).Date; 
     TimeSpan vacation = TimeSpan.Parse(lbldays.Text); 
     TimeSpan total; 
     if (start > end) 
     { 
      lberr.Text = "Please check again on Starting date"; 
      return; 
     } 
     else 
     { 
      remaindate = end - start; 
      lberr.Text = "you have left with " + remaindate.TotalDays + "days."; 
      total = vacation - remaindate; 
      lbldays.Text = "you have left with " + total.TotalDays + "days."; 
      s = "Update Vacation set Balance = '" + total + "', NoOfDays ='" + remaindate + "' where National_ID = '" + lblid.Text+ "'"; 
      if (db.Run(s)) 
      { 
       //lberr.Text = "The data has update"; 
      } 

      else 
      { 
       lberr.Text = "The data has not update"; 
      } 
     } 

    } 

wie kann ich die Art von Daten TimeSpan-integer mit variablen und insgesamt nach berechneter Formel ändern, um einen Wert in der Tabelle als int zu speichern?

Bitte beachten Sie, dass ich den Typ der Werte in varchar (20) mit Balance und NoOfDays geändert habe, damit das Projekt funktioniert.

+0

Vielleicht ist diese Frage für jemand anderen sinnvoll, aber '" Wie kann ich den Datentyp von TimeSpan zu Integer mit Variable und Summe nach berechneter Formel ändern, um einen Wert in der Tabelle als int zu speichern. "' Macht absolut keinen Sinn mir. Sie sollten diese Frage genauer überprüfen. – caesay

+0

Was ist das Problem, wenn du deine Tage in 'int' verwandelst? 'var Tage = (int) total.TotalDays;' –

+0

Das Problem, wenn ich den Wert in der Tabelle für Balance und NoOfDays die Werte wie 20:00:00 oder 30:00:00 angezeigt werden. Meine Frage, wie kann der Wert als integrar gespeichert werden, um den Wert wie 30 oder 20 zu sein. – Marco

Antwort

0

Nun, wenn Sie einen bestimmten Wert von .net nehmen Sie eine Int. Zum Beispiel für die Tage. Welchen besonderen Wert der Zeitspanne möchten Sie?

Zum Beispiel:

TimeSpan g = TimeSpan.MinValue; 
int p = g.Days; 

* In Ihrem Code Sie scheinen dieses Konzept zu verstehen. Ich glaube nicht, dass Sie eine Zeitspanne in Integer konvertieren können.

Bearbeiten Sie Ihre Frage, so können wir besser verstehen *

0

Versuchen Sie Ihr DB-Abfrage dies ändern: "Update Vacation set Balance = " + total.TotalDays + ", NoOfDays = " + remaindate.TotalDays + " where National_ID = '" + lblid.Text + "'"

0

Zunächst einmal würde ich vorschlagen, Balance- und NoOfDays einzustellen geben Sie zurück zu int. Es fügt nur unnötige Komplexität zu Ihrem Programm für String-Parsing, Abfälle Raum etc ...

Für Ihre Frage der einfachste Sache (wie andere vorgeschlagen) zu tun, ist nur die gesamte variable gegossen direkt auf int:

int days = (int)total.TotalDays;