devotionMedlem sedan jan. 20013 582 inlägg 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".
Peter SMedlem sedan dec. 20025 483 inlägg Hur ser SQL-frågan ut som resulterar i RS?
devotionMedlem sedan jan. 20013 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
Peter SMedlem sedan dec. 20025 483 inlägg Precis: ...WHERE id IN (...)