Hej Du kan inte tilldela null till en sträng. Gör såhär om det kan förekomma null: Har nog skrivit om din kod lite. Men det är för att undvika modulnivå variabler. Det är bättre att skicka det som parametrar till funktionen. Vet inte heller vart a varibeln kommer in i bilden. Du hade desutom deklarerat strAvd as integer. Men tilldellat den "000". Skall den oxå vara formaterad till tre sifrror. Ex. 001? Iså fall kan du använda Format$() funktionen.:Problem med Recordset
Fråga 1 har löst sig med första svaret, helt rätt att strAvd ska vara string, hade bara labbat med lite olika alternativ för att få till den.
Däremot behöver jag fortfarande hjälp med fråga 2.
Har två problem i nedanstående kod som jag hoppas få hjälp med.
1. När jag startar programmet får jag Type mismatch på raden "strAvd = rsPnr![ID_1004]", om den posten innehåller Null, spelar ingen roll om jag ändrar Empty till Null. Hur får jag till det?
2. Ibland ser tabellen jag hämtar data till RS ut så här:
id_1010 id_1004
1592 360
1692 360
1710 410
1850 250
1850 351
Ibland tar den då bara raden som innehåller 1850 en gång och kör en koll på den , men nån enstaka gång kör den båda raderna. Hur ska jag skriva för att vara säker på att den alltid kör koll på alla rader?
Dim strABGnr As String
Dim strAvd As String
Dim strABGnrtemp As String
Set cnTest = New ADODB.Connection
Set rsPnr = New ADODB.Recordset
cnTest.Open "Provider=SQLOLEDB.1; Persist Security Info=False; User ID=sa; Initial Catalog=Temp; Data Source=S123"
rsPnr.Open "test", cnTest, adOpenForwardOnly, adLockOptimistic
Sub Starta
rsPnr.MoveFirst
Do Until rsPnr.EOF
If a = "1" Then
Exit Sub
Else
strABGnrtemp = rsPnr![ID_1010]
strAvd = rsPnr![ID_1004]
If strAvd Is Empty Then
strAvd = "000"
strPnr = "9999999999"
Else
strPnr = "0000000000"
End If
istr = Len(strABGnrtemp)
Select Case istr
Case 1
strABGnr = "00000" & strABGnrtemp
Case 2
strABGnr = "0000" & strABGnrtemp
Case 3
strABGnr = "000" & strABGnrtemp
Case 4
strABGnr = "00" & strABGnrtemp
Case 5
strABGnr = "0" & strABGnrtemp
Case 6
strABGnr = strABGnrtemp
End Select
Call koll 'Kör test mot koll
End If
'cnTest.Execute "Insert Into EP1_1test SELECT * from EP1_1 Where ID_1001=" & strPnr
'cnTest.Execute " Insert Into EP1_1test SELECT * from EP1_1 Where ID_1001=12345"
rsPnr.MoveNext
Loop
End SubSv: Problem med Recordset
sString = rs!Column & ""
/MartinSv: Problem med Recordset
<code>
Sub Starta()
Dim strABGnr As String
Dim strAvd As Long
Dim cnTest As ADODB.Connection
Dim rsPnr As ADODB.Recordset
Set cnTest = New ADODB.Connection
Set rsPnr = New ADODB.Recordset
cnTest.Open "Provider=SQLOLEDB.1; Persist Security Info=False; User ID=sa; Initial Catalog=Temp; Data Source=S123"
rsPnr.Open "test", cnTest, adOpenForwardOnly, adLockOptimistic
Do Until rsPnr.EOF Or a = "1"
If IsNull(rsPnr("ID_1004")) Then
strAvd = 0
strPnr = "9999999999"
Else
strAvd = rsPnr("ID_1004")
strPnr = "0000000000"
End If
strABGnr = Format$(rsPnr("ID_1010"), "000000")
Call Koll(strAvd, strPnr, strABGnr) 'Kör test mot koll
rsPnr.MoveNext
Loop
rsPnr.Close
cnTest.Close
End Sub
Sub Koll(strAvd As Long, strPnr As String, strABGnr As String)
End Sub
</code>