Hej, Använd en For Each loop på Items samlingen: Hej Andreas,Försöker loopa igenom en checkboxlist och lägga in ikryssade rutor i en Access-t
Behöver hjälp. Jag har denna loop som det är nåt fel på. Jag är nybörjare och försöker så gott jag kan, men nu har jag kört fast.
KOD:
Dim strSql3 as string = "SELECT * FROM tblNarvarande"
Dim Dr3 as OLEDBDatareader = datareader_data(strSql3)
'// For-loop som körs för alla rutor. Kollar för varje gång om någon ruta är vald, om den är det så ska ny post skrivas till tblNarvarande
Dim ItemNum as Integer = 0
For ItemNum=0 to boxNarvarande.Items.Count - 1
If boxNarvarande.Items(ItemNum).Selected = True Then
Dim sql4 as string = "INSERT INTO tblNarvarande(kvall_id,medlem_id) VALUES(" & boxNarvarande.selecteditem.value & "," & boxNarvarande.selecteditem.value & ")"
response.Write(sql4)
'// Command-objekt
dim Cmd2 as new OLEDBCommand(sql4, Con)
'// Köra frågan mot databasen
Cmd2.executeNonQuery()
End If
Next
----
Resultatet jag får av detta är att är två rutor ikryssade läggs två poster in i tblNarvarande. Men båda får samma värden. Är tre ikryssade sker samma sak! Hur får jag den att leta sig vidare och lägga in de som är ikryssade?
Tack på förhand,
//mvh BjörnSv: Försöker loopa igenom en checkboxlist och lägga in ikryssade rutor i en Acce
<vode vb.net>
For Each item In boxNarvarande.Items
If item.Selected Then
strIN = strIN & ", " & item.Value
End If
Next
</code>
Du kan sammla insert till en sats. Om du infogar idn från en befintlig tabell. T.ex. Lägger till medlems id'n i en länk tabell:
Dim strSql3 as string = "SELECT * FROM tblNarvarande"
Dim Dr3 as OLEDBDatareader = datareader_data(strSql3)
Dim strIN As String
Dim strSQL as string
For Each item In boxNarvarande.Items
If item.Selected Then
strIN = strIN & ", " & item.Value
End If
Next
If Len(strIN) Then
strSQL = "INSERT INTO tblNarvarande(kvall_id,medlem_id)" & vbCrLf & _
"SELECT " & Kvall_id & ",MemberId" & vbCrLf & _
"FROM Member" & vbCrLf & _
"WHERE MemberId IN (" & Mid(strIN, 3) & ")"
response.Write(strSQL)
'// Command-objekt
dim Cmd2 as new OLEDBCommand(sql4, Con)
'// Köra frågan mot databasen
Cmd2.executeNonQuery()
End If
Sv:Försöker loopa igenom en checkboxlist och lägga in ikryssade rutor i en Acce
Fick själv loop:en att fungera, gjorde så här:
Dim i as integer
For i=0 To BoxNarvarande.Items.Count - 1
If BoxNarvarande.Items(i).Selected Then
Dim sql4 as string = "INSERT INTO tblNarvarande(kvall_id,medlem_id) VALUES(" & boxNarvarande.items(i).value & "," & boxNarvarande.items(i).value & ")"
'// Command-objekt
Dim Cmd2 as new OLEDBCommand(sql4, Con)
'// Köra frågan mot databasen
Cmd2.executeNonQuery()
End If
Next
Grejen är att när jag lägger in värdena från checkboxlist:en i tblNarvarande ska alla poster även knytas till kvall_id som är primärnyckel i tblKvall. Jag har testat med nedanstående kod men då fungerar det endast om jag har kryssat i en ruta. Men kryssar jag i två. Så känner den av @@identity som posten jag precis la in i tblNarvarande...om du förstår? Det har väl något att göra med att jag är inne på en ny session efter första inlagda posten och då är den senaste inlagda posten ju den från tblNarvarande. Har du någon aning om hur jag ska lösa det?
Tack på förhand!
Dim strSql3 as string = "SELECT * FROM tblNarvarande"
Dim Dr3 as OLEDBDatareader = datareader_data(strSql3)
'// For-loop som körs för alla rutor. Kollar för varje gång om någon ruta är vald, om den är det så ska ny post skrivas till tblNarvarande
'Dim ItemNum as Integer = 0
Dim i as integer
For i=0 To BoxNarvarande.Items.Count - 1
If BoxNarvarande.Items(i).Selected Then
Dim sql4 as string = "INSERT INTO tblNarvarande(kvall_id,medlem_id) VALUES(" & "@@identity" & "," & boxNarvarande.items(i).value & ")"
'response.Write(sql4)
'// Command-objekt
Dim Cmd2 as new OLEDBCommand(sql4, Con)
'// Köra frågan mot databasen
Cmd2.executeNonQuery()
End If
Next
'// Stäng anslutningen
Con.close()
'// Förhindra låsning
Dr2.close()
Dr3.close()
//mvh Björn