webForumDet fria alternativet

Optimera fråga

0 svar · 308 visningar · startad av devotion

devotionMedlem sedan jan. 20012 711 inlägg
#1

Hej,

Jag har följande kod:

	sSQL= "SELECT [tbltask].[TaskNr], [tblTask].[Id] AS TaskId, [tblTodo].[Id] AS TodoId" _
		& " FROM [tblTask]" _
		& " INNER JOIN [tblTodo]" _
		& " ON [tblTask].[Id] = [tblTodo].[OwnerId]" _
		& " WHERE [tblTodo].[DefId] = 10002 AND [tbltodo].[OwnerType] = 2 AND [tblTodo].[CompletedBy] = ''"
	
	Rs.Open sSQL, Conn
	
	'Om det inte finns några poster, avsluta suben
	If Rs.EOF then exit sub
	
	'Loopa ut alla uppdragsidena
	while Not Rs.EOF
		lTaskId=Rs("TaskId")
		lTodoId=Rs("TodoId")
		sTaskNr=Rs("TaskNr")

		if not IsNumeric(lTodoId) then exit sub
		call GetOrderNo(sTaskNr, lTaskId)
		call Application.MarkTodoCompleted(lTodoId)
		Rs.MoveNext
	wend

Funktionen GetOrderNo(sTaskNr, lTaskId) ser ut som nedan:

'Funktion för att hämta ordernummer
Function GetOrderNo(sTaskNr, lOwnerId)

	dim sSQL, Conn
	
	'Öppna databasen
	Set Conn=CreateObject("ADODB.Connection")
	Conn.Open Application.sDbConnectionString
	
	 sSQL ="INSERT INTO [Uppdrag Nu].dbo.[tblExtraFielddata] ( [Value], [FieldId], [OwnerId], [Modified] )" _
		& " SELECT [OrdNo], 10040, " & lOwnerId & ", getdate() FROM [F0100].dbo.[Ord] WHERE [WebPg] = '" & sTaskNr & "'"

	Conn.Execute sSQL
		
	Set Conn=Nothing
		
End function

Allt fungerar precis som det ska, men jag tycker inte riktigt om att göra ett databasanrop i en loop... Kan man göra på något annat, bättre sätt?

Mvh
Henrik

Genererad på 375 ms · cache AV · v20260730165559-full.f96bc7eb