Jag har en accessdatabas som jag kör via asp.net (vb). Command = New OleDbCommand("SELECT SUM(byggnad), SUM(laxor) FROM SumWeek WHERE Personnummer='" + Personnummer.Text + "' ", Connection) Tack Niklas! Det beror med all säkerhet på att något värde är null. Ett annat sätt är reader(0).ToString(), då får du en tom sträng vid null-värde. Ett annat alternativ är givetvis att kontrollera att värdet inte är null innan du försöker konvertera till Int.Hur skriva syntax "select SUM..." ?
Det är en massa personer som registrerar tid varje vecka på olika aktiviteter och nu vill jag göra beräkningar på dessa timmar. Jag har tidigare kört med reportviewer, men nu vill jag göra det "manuellt"
<code>
' tog inte med detta
Command = New OleDbCommand("SELECT SUM(byggnad, laxor) FROM SumWeek WHERE Personnummer='" + Personnummer.Text + "' ", Connection)
Dim reader As OleDbDataReader = Command.ExecuteReader()
reader.Read()
sumbyggnad.Text = reader.GetInt32(0)
sumlaxor.Text = reader.GetInt32(1)
' osv
</code>
Kanske nästan? Det funkar inte och jag har provat några varianter om man säger så...
"Specified cast not valid" är senaste felet. byggnad och laxor är tal i databasen
Hur skriver jag det så att det blir rätt i ASP.NET ???Sv: Hur skriva syntax "select SUM..." ?
Är ändringen så att det blir rätt SQL, givet att det andra är rätt; tabellen heter SumWeek osv.
Sen bör du inte använda strängkonkatenering, utan använda parametrar om det går, typ (pseudokod, jag har inte koll på exakt hur det skulle se ut):
Command = New OleDbCommand("SELECT SUM(byggnad), SUM(laxor) FROM SumWeek WHERE Personnummer=?", Connection)
Command.Bind(1, Personnummer.Text)
Detta för att undvika onödiga fel och medvetna sql injections.
Slutligen så måste du veta att raderna
sumbyggnad.Text = reader.GetInt32(0)
sumlaxor.Text = reader.GetInt32(1)
är korrekta.Sv:Hur skriva syntax "select SUM..." ?
Jag har vissa funderingar på dessa också:
sumbyggnad.Text = reader.GetInt32(0)
sumlaxor.Text = reader.GetInt32(1)
Finns det något bättre sätt att hämta data på?
Jag använder denna (reader.GetString/GetInt32) på en massa ställen tidigare (bara SELECT inte SUM) och det funkar oftast, men jag får ofta "Specified cast not valid", jag tolkar det som att det är fel format på något. Finns det något okänsligare sätt?
I detta fall så är både "byggnad" och "laxor" långa heltal och då borde en Int vara helt rätt, men likt sjutton säger den att det är något fel. Tänkte i bilen i morse om det kan vara att någon post har Null och det blir fel därför? Eller varför är bråkar den?Sv: Hur skriva syntax "select SUM..." ?
/Johan