När jag använder denna (ADODB.Connection) istället för RecordSource, tar det tid innan datan registreras i tabellen. Någon som har varit med om något liknande? Måste använda detta, eftersom det är en listboxs poster som ska registreras i databasen: Testa med: Okej, jag ska testa din lösning. Fungerar fint. Tack för hjälpen! Jag tror det beror på att du i din tidigare kod använder en annan anslutning än koden som förändrar data.ADODB.Connection i ACCESS
<code>
Dim iRounds as Integer
Dim intOrdID as Integer
Dim CS As New ADODB.Connection
Dim strSQL as String
For iRounds = lst_LST_tmp_Register.ListCount - 1 To 0 Step -1
If LCase(Left(lst_LST_tmp_Register.Column(6, iRounds), 7)) = "ordinär" Then
intOrdID = CInt(Right(lst_LST_tmp_Register.Column(6, iRounds), Len(lst_LST_tmp_Register.Column(6, iRounds)) - 9))
strSQL = "INSERT INTO TBL_Uttag(FLD_Person_ID, FLD_OrdArtikel_ID, FLD_Antal, FLD_Datum) VALUES(" & Identifier & ", " & intOrdID & ", " & CInt(lst_LST_tmp_Register.Column(2, iRounds)) & ", #" & lst_LST_tmp_Register.Column(4, iRounds) & "#)"
CS.Open CurrentProject.Connection
CS.Execute strSQL
CS.Close
Else
strSQL = "INSERT INTO TBL_Uttag(FLD_Person_ID, FLD_Antal, FLD_Datum, FLD_Artikeltext, FLD_Artikelnr, FLD_Fritext, FLD_Storlek) VALUES(" & Identifier & ", " & CInt(lst_LST_tmp_Register.Column(2, iRounds)) & ", #" & lst_LST_tmp_Register.Column(4, iRounds) & "#, '" & lst_LST_tmp_Register.Column(1, iRounds) & "', '" & lst_LST_tmp_Register.Column(0, iRounds) & "', '" & lst_LST_tmp_Register.Column(6, iRounds) & "', '" & lst_LST_tmp_Register.Column(3, iRounds) & "')"
CS.Open CurrentProject.Connection
CS.Execute strSQL
CS.Close
End If
Next
</code>
Det blev inte så lyckat att klistra in koden, men om någon är intresserad eller tror sig behöva den för att hjälpa mig, så finns den iallafall där.Sv: ADODB.Connection i ACCESS
<code>
Dim iRounds as Integer
Dim intOrdID as Integer
Dim CS As ADODB.Connection
Dim strSQL as String
Set CS = CurrentProject.Connection
For iRounds = lst_LST_tmp_Register.ListCount - 1 To 0 Step -1
If LCase(Left(lst_LST_tmp_Register.Column(6, iRounds), 7)) = "ordinär" Then
intOrdID = CLng(Mid(lst_LST_tmp_Register.Column(6, iRounds), 9))
strSQL = "INSERT INTO TBL_Uttag(FLD_Person_ID, FLD_OrdArtikel_ID, FLD_Antal, FLD_Datum) VALUES (" & Identifier & ", " & intOrdID & ", " & lst_LST_tmp_Register.Column(2, iRounds) & ", #" & lst_LST_tmp_Register.Column(4, iRounds) & "#)"
Else
strSQL = "INSERT INTO TBL_Uttag(FLD_Person_ID, FLD_Antal, FLD_Datum, FLD_Artikeltext, FLD_Artikelnr, FLD_Fritext, FLD_Storlek) VALUES(" & Identifier & ", " & CInt(lst_LST_tmp_Register.Column(2, iRounds)) & ", #" & lst_LST_tmp_Register.Column(4, iRounds) & "#, '" & lst_LST_tmp_Register.Column(1, iRounds) & "', '" & lst_LST_tmp_Register.Column(0, iRounds) & "', '" & lst_LST_tmp_Register.Column(6, iRounds) & "', '" & lst_LST_tmp_Register.Column(3, iRounds) & "')"
End If
CS.Execute strSQL
Next
</code>
KAn du var vänlig att berätta vad du har för datakälla i listboxen och hur din datastruktur ser ut?
Kan finnas andra effektivare sätt att utforma datastruktor och eller kod.Sv: ADODB.Connection i ACCESS
Listboxen är en "Värdelista" och jag lägger till rader i den via .AddItem(). Det hela går ut på att man ska kunna lägga till ett antal rader, och sedan registrera dem i databasen alla på en gång. Måste även kunna se vilka som är "ordinära"-rader, och då bara lägga till ID i tabellen. Annars ska lite andra faktorer läggas till. Det är lite krångligt.. men funkar din lösning, så löser sig allt för mig :)
ÅterkommerSv: ADODB.Connection i ACCESS
Kan du förklara varför det blir så? Är det för att den får öppna och stänga hela tiden, och att det tar tid? För nu är det alltid öppet, eller?Sv: ADODB.Connection i ACCESS
Att den därför inte direkt kan läsa förändringen för att den än inte hunnits skriva till databasen eller för att data liger cachat.