OK. Kan godt se der mangler lidt info derfor kommer hele smørren med 3 SQL'er. Det er normalt måden jeg laver det på. Har lige prøver at sætte den til en normal RS og ikke rs2. Hvilket bevirker at den virker men ikke de andre. Her er hvad der er skrevet . forklare måske lidt:
Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " DSN = DSN & "DBQ=" & Server.MapPath("../db/Dxlog.mdb") Conn.Open DSN strSQL2 ="SELECT count(*) FROM dxlog where Contest <> '' AND Dato=#" & date & "#" Set rs2 = Conn.Execute(strSQL2) strSQL3 ="SELECT * FROM dxlog where Contest <> '' AND Dato=#" & date & "#" Set rs3 = Conn.Execute(strSQL3) strSQL ="SELECT DISTINCT notat FROM [dxlog] where Contest <> '' AND Modulation='CW' AND Dato=#" & date & "#" RS.OPEN STRsql, CONN, 3, 1
Når du bruger RS.Open skal dit RecordSet-object også altid være instantieret. Det er det jo ikke i dette tilfælde.
Så prøv at rette det til:
Set Conn = Server.CreateObject("ADODB.Connection") Set RS = Server.CreateObject("ADODB.RecordSet") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " DSN = DSN & "DBQ=" & Server.MapPath("../db/Dxlog.mdb") Conn.Open DSN strSQL2 ="SELECT count(*) FROM dxlog where Contest <> '' AND Dato=#" & date & "#" Set rs2 = Conn.Execute(strSQL2) strSQL3 ="SELECT * FROM dxlog where Contest <> '' AND Dato=#" & date & "#" Set rs3 = Conn.Execute(strSQL3) strSQL ="SELECT DISTINCT notat FROM [dxlog] where Contest <> '' AND Modulation='CW' AND Dato=#" & date & "#" RS.OPEN STRsql, CONN, 3, 1
...ved dine andre recordsets har du jo "Set RSx = ...", så de instantieres på samme tidspunkt som de fyldes med data. Sådan fungerer RS.Open desværre ikke :)
Kanon. Det virkede. Der er vist lang vej endnu inden jeg kan skrive nørd på mit visitkort.... HE..HE.
Lægger du lige et svar. Har du tid til et lille tillagsspørgsmål ?
Hvis et RS skal bestå af tre tal men der kun er et i DB. FX. i DB står 22 men rs skal retunere 022. Eller 5 bliver til 005. Findes der en kommando til det.
Function doZero(data) If len(data) < 3 Then If len(data) = 2 Then doZero = "0" & data ElseIf len(data) = 1 Then doZero = "00" & data Else doZero = "000" End If Else doZero = data End If End Function
function doZero(data) if CDbl(data) = 0 then data = "000" if CDbl(data) > 0 and CDbl(data) < 10 then data = "00" & data if CDbl(data) > 9 and data < 100 then data = "0" & data doZero = data end function
hmm.. måske burde denne function giv et ukorrekt resultat, da data-værdien før anden og tredje IF-sætning..
Men hverken spotguns script, eller mit script, tager højde for negative tal (f.eks. -5, -22). Man skal lige huske, at "-" optager 1 tegn i længden.. dvs "-5" er 2 tegn, "-22" er 3 tegn..
Hvis jeg ville check længden (som spotgun gjorde), ville jeg nok gøre sådan her:
function doZero(data) if len(data) = 1 then data = "00" & data elseif len(data) = 2 then data = "0" & data end if doZero = data end function
eller sådan her:
function doZero(data) select case len(data) case 1 data = "00" & data case 2 data = "0" & data end select doZero = data end function
/theSurfer
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.