Försöker skapa en DataTable som jag ska fylla radvis och sen binda till en datagrid vad har jag gjort för fel? Det ska vara stor bokstav i System och Decimal: Tack för hjälpen, nu blir det ett annat fel längre ner som jag inte förstår?! Du behöver väl inte ha med databaskopplingen i loopen?Problem med DataTable
--------------------------------------------------------------------------------------------------------------
Får detta felmedelandet...
Object reference not set to an instance of an object.
'dataType' argument cannot be null. Parameter name: dataType
Line 67: '--------- Skapa kolumnhuvud till ADO tabell
Line 68: dtTidrader = New DataTable("Tidrader")
Line 69: dtTidrader.Columns.Add("Starttid", System.Type.GetType("system.datetime"))
Line 70: dtTidrader.Columns.Add("Sluttid", System.Type.GetType("system.datetime"))
Line 71: dtTidrader.Columns.Add("Tim", System.Type.GetType("system.decimal"))
------------------------------------------------------------------------------------------------------------
Här är koden för funktionen.....
Private Sub LoadTidsrapport()
Dim conTunet As System.Data.OleDb.OleDbConnection
Dim ds As New DataSet
Dim SQL As String
Dim datum As Date
Dim dag As Int32
Dim dtTidrader, dtTidrapport As DataTable
Dim rowTidrad As DataRow
Dim vWeekNbr As Integer
Dim drTider As OleDb.OleDbDataReader
Dim starttid, sluttid As Date
Dim tjanstid As Integer
Dim tim As Decimal
Dim fel As String
Dim tidrad As String
'------ Kod för att få fram vecka
If cboDel.SelectedValue = 1 Then
datum = cboYear.SelectedValue + "-" + cboMonth.SelectedValue + "-" + "1"
Else
datum = cboYear.SelectedValue + "-" + cboMonth.SelectedValue + "-" + "16"
End If
vWeekNbr = _
System.Threading.Thread.CurrentThread.CurrentUICulture.Calendar.GetWeekOfYear(datum _
, Globalization.CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday)
Try
'--------- Skapa kolumnhuvud till ADO tabell
dtTidrader = New DataTable("Tidrader")
dtTidrader.Columns.Add("Starttid", System.Type.GetType("system.datetime"))
dtTidrader.Columns.Add("Sluttid", System.Type.GetType("system.datetime"))
dtTidrader.Columns.Add("Tim", System.Type.GetType("system.decimal"))
dtTidrader.Columns.Add("Tjanstid", System.Type.GetType("system.int32"))
Catch ex As Exception
Label2.Text = ex.Message
End Try
Try
For dag = 1 To dag <= 31 Step 1
'----- Öppna förbindelse till databasen
conTunet = New System.Data.OleDb.OleDbConnection("Provider=Microsoft.jet.OLEDB.4.0;" & "Data Source=" & Server.MapPath("tunet.mdb"))
conTunet.Open()
SQL = "SELECT Personal.AnstNR, Personal.Fornamn, Gruppmedlemmar.GruppID, Tjanst.TjanstID, Tjanst.Tid, Schema.Dag, Vecka.VeckoNR, Tjanst.Starttid, Tjanst.Sluttid FROM (((Personal INNER JOIN Gruppmedlemmar ON Personal.AnstNR=Gruppmedlemmar.AnstNR) INNER JOIN Tjanst ON Gruppmedlemmar.GruppID=Tjanst.GruppID) INNER JOIN Vecka ON Gruppmedlemmar.GruppID=Vecka.GruppID) INNER JOIN [Schema] ON (Gruppmedlemmar.GruppID=Schema.GruppID) AND (Gruppmedlemmar.ForarNR=Schema.ForarNR) AND (Vecka.Veckotyp=Schema.Veckotyp) AND (Tjanst.TjanstID=Schema.TjanstID) WHERE (((Personal.AnstNR)=231) AND ((Schema.Dag)=" & dag & ") AND ((Vecka.VeckoNR)=" & vWeekNbr & "));"
Dim cmd = New System.Data.OleDb.OleDbCommand(SQL, conTunet)
drTider = cmd.executereader()
drTider.Read()
starttid = drTider.GetDateTime(7)
sluttid = drTider.GetDateTime(8)
tim = drTider.GetDecimal(4)
tjanstid = drTider.GetInt32(3)
drTider.Close()
'------- Lägg till ny rad til ADO tabell för tidrader
rowTidrad = dtTidrader.NewRow
rowTidrad("Starttid") = starttid
rowTidrad("Sluttid") = sluttid
rowTidrad("Tim") = tim
rowTidrad("Tjanstid") = tjanstid
Next
'------ Stänger förbindelsen till databasen
conTunet.Close()
'------ Bind tabllen tidrader till datagrid dgrTidrapport
dgrTidrapport.DataSource = dtTidrader.DefaultView
dgrTidrapport.DataBind()
Catch ex As Exception
Label1.Text = ex.Message + fel
End TrySv: Problem med DataTable
System.Type.GetType("System.Decimal")Sv: Problem med DataTable
Object reference not set to an instance of an object.
Line 107:
Line 108: '------ Stänger förbindelsen till databasen
Line 109: conTunet.Close()
Line 110:
Line 111:Sv:Problem med DataTable
Plocka ut den från loopen och prova.