Jag måste skriva om en del SQL-utryck som fungerar kanon i SQL-server, men inte i Access: Tja! Tyvärr, typblandningasfel. Kan egentligen inget om SQL, men gör ändå ett försök... =) Nja, jag fick inga error nu, men inte heller vad jag ville ha. Nu har jag nästan kunnat fixa till det: Vet inte om det är mycket snyggare så här:Mera SQL problem
<code>
SELECT arrno FROM t_songtitlar where arrno < 200 ORDER BY CAST(arrno as Int)
</code>
Jag vill alltså ha fram "lediga" arrno.Sv: Mera SQL problem
Pröva med:
<code>
SELECT arrno FROM t_songtitlar where arrno < 200 ORDER BY CInt(arrno)
</code>
CAST funkar inte i Access vad jag vet... Sv: Mera SQL problem
Ett av problemen är att ArrNo är text, och där ligger det sparat som 034 t ex.
I SQL_Servern var detta inga problemSv: Mera SQL problem
Pröva med
SELECT arrno FROM t_songtitlar where CInt(arrno) < 200 ORDER BY CInt(arrno) Sv: Mera SQL problem
Problemet.
ArrNo är av datatyp text som innehåller ett värde t ex 034.
Mina låtar har olika ArrNo. Beroende hur lång jag har kommit(inspelat osv) så har en del fått ArrNo andra inte.
Så det finns alltså hop i ArrNo. Så mellan 001 och 200 så finns ett antal lediga ArrNo och det är de som jag vill ha tag i.
Förklara jag oklart?Sv: Mera SQL problem
<code>
strSQL = "SELECT arrno FROM t_songtitlar where CInt(arrno) < 200 ORDER BY CInt(arrno)"
'lite kod här
<select CLASS="SKUGGA" Style ="width: 130" SIZE="1" NAME="arrno">
<option></option>
<%
Dim fldArrNo
Dim Index
Dim Number
Dim LastNumber
If Not Rst.EOF Then
Set fldArrNo = Rst("ArrNo")
LastNumber = CLng(fldArrNo.Value) - 1
Do Until Rst.EOF
Number = CLng(fldArrNo.Value) - 1
For Index = LastNumber To Number
If LEN(Index)=1 Then
Index= "00" & Index
ElseIf LEN(Index)=2 Then
Index= "0" & Index
Else
Index=Index
End If
%>
<option value="<% = Index %>"><% = Index %></option>
<%
Next
LastNumber = Number + 2
Rst.MoveNext
Loop
End If
dim i
for i = LastNumber to 200
If LEN(i)=1 Then
i= "00" & i
ElseIf LEN(i)=2 Then
i= "0" & Index
Else
i=i
End If
%>
<option value="<% = i %>"><% = i %></option>
<%
next
%>
%>
</select>
</code>
Nu plockar han fram helt rätt nummer, men vad jag också skulle vilja är att den skulle gå upp till 200. Så här fungerar det, men det känns väldigt klumpigt.
Några tips?Sv: Mera SQL problem
<code>
<select CLASS="SKUGGA" Style ="width: 130" SIZE="1" NAME="arrno">
<option></option>
<%
Dim fldArrNo
Dim Text
Dim Index
Dim Number
Dim LastNumber
strSQL = "SELECT arrno FROM t_songtitlar where CInt(arrno) < 200 ORDER BY CInt(arrno)"
If Not Rst.EOF Then
Set fldArrNo = Rst("ArrNo")
LastNumber = CLng(fldArrNo.Value)
Do Until Rst.EOF
Number = CLng(fldArrNo.Value)
For Index = LastNumber + 1 To Number - 1
Text = Right("000" & Index, 3)
Response.Write "<option value=""" & Text & """>" & Text & "</option>"
Next
LastNumber = Number
Rst.MoveNext
Loop
Else
Number = 0
LastNumber = 201
End If
For Index = LastNumber + 1 To Number - 1
Text = Right("000" & Index, 3)
Response.Write "<option value=""" & Text & """>" & Text & "</option>"
Next
%>
</select>
</code>