devotion Medlem sedan jan. 2001 3 582 inlägg Frågan 30 okt. 2007 11:42 #1 ej!
Jag har följande kod
while not Rs.EOF
'Hämta värdena från databasen
lTimeId=Rs("Id")
sTimeSign=Rs("Sign")
sTimeTypeArt=Rs("TimeTypeArt")
sTimeTypeTyp=Rs("TimeTypeTyp")
sTimeTypeName=Rs("TimeTypeName")
sTimeSpec=Rs("Spec")
dTimeDate=FormatDateTime(Rs("StartDate"),2)
nTimeTime=ConvertValue(Rs("Time"))
cPrice=Rs("Price")
fPercentValue=ConvertValue(Rs("DiscountPCT"))
fTimeReportTime=GetTimeDiff(Rs("StartDate"), Rs("StopDate"), Rs("Time"))
sTaskNr=Rs("TaskNr")
'Skapa sLine
sLine="TR;" & lTimeId & ";" & sTimeSign & ";" & sTimeTypeArt & ";" & sTimeTypeTyp & ";" & sTimeTypeName & ";" & sTimeSpec & ";" & dTimeDate & ";" & nTimeTime & ";" & cPrice & ";" & fTimeReportTime & ";" & sTaskNr & ";" & fPercentValue & ";"
sFile.writeLine sline
if Rs("Sign1By")="" then
nTimeCount=nTimeCount+1
bWriteToTextFile=1
end if
'Sätta "Attest 1" på rapporterade tider
sSQL="UPDATE [tblTime] SET [Sign1By]= 'System', [Sign1Date] = GetDate() WHERE [Id] = " & lTimeId
executeSQL(sSQL)
Rs.MoveNext
wend
Hur kan man optimera?
Nu handlar det inte om hur mycket data som helst, men jag tycker inte om att ha en sql-fråga i en loop.. :)
Mvh
Henrik
Optimera vet jag inte men du behöver egentligen inte dim:ar upp variabler för alla dina värde ifrån ditt Recordset. Beroende på vilken Databas du använder dig av. Om det är Access så är det egentligen bara "PM" fältet du behöver dimar och spara då den visas endast en gång.
Du skulle kunna gruppera alla dina ID som träffas och endast köra 1 Update i din "Sätta "Attest 1" på rapporterade tider".
P Peter S Medlem sedan dec. 2002 5 483 inlägg Hur ser SQL-frågan ut som resulterar i RS?
devotion Medlem sedan jan. 2001 3 582 inlägg 'SQL-sats för att hämta ut data ur tblTime, tblTimetype, tblUsers, tblTask
sSQL= "SELECT [tblTime].[Id], [tblTime].[Spec], [tbltime].[Modified], [tbltime].[startDate] AS StartDate, [tblTime].[StopDate] AS StopDate, [tblTime].[Time], [tblTime].[Price], [tblTime].[DiscountPCT], [tblTime].[Sign1By], " &_
"[tblTimeType].[Custom1] AS TimeTypeArt, [tblTimeType].[Custom2] AS TimeTypeTyp, [tblTimeType].[Name] AS TimeTypeName, " &_
"[tblTask].[TaskNr] AS TaskNr, " &_
"[tblUsers].[Sign], [tblUsers].[Name] " &_
"FROM [tblTime] " &_
"INNER JOIN [tblTimeType] " &_
"ON [tblTime].[TimeTypeId] = [tblTimeType].[Id] " &_
"INNER JOIN [tblTask] " &_
"ON tblTime.[TaskId] = [tblTask].[Id] " &_
"INNER JOIN [tblUsers] " &_
"ON tbltime.[User] = [tblUsers].[Name] " &_
"WHERE startDate > '" & dStartDate & "' AND stopDate < '" & dStopDate & "' AND [tblUsers].[Name] = '" & sUser & "'"
Hmm, det kanske var en bra idé att göra en sträng av alla id för att sedan göra en Update på slutet! :)
Mvh
Henrik
P Peter S Medlem sedan dec. 2002 5 483 inlägg Precis: ...WHERE id IN (...)