if Rs_O2.eof then
' använd RS_O1
else
' använd RS_O2
end if
Eller precis tvärtom, krångla inte till det i onödan.
3 svar · 405 visningar · startad av devotion
Hej,
Jag har två recordset som jag vill kombinera, men får inte till det...
'Skapa recordset
Set Rs_O1=CreateObject("ADODB.Recordset")
Set Rs_O2=CreateObject("ADODB.Recordset")
'SQLfråga som hämtar UppdragsId från tblTask och användarsignatur från tblUsers beronde på vilken användare som är vald på en byggnad
sSQL_O2 = " SELECT t.[Id] AS TaskId, t.TaskNr,u.[Sign] AS UserSign, u.[Name] AS UserName, ef.[Value] AS UserId" _
& " FROM tblTask t" _
& " INNER JOIN tblObject o" _
& " ON t.Object2Nr = o.[Nr]" _
& " INNER JOIN tblExtraFieldData ef" _
& " ON o.[Id] = ef.OwnerId" _
& " INNER JOIN tblExtrafieldDef ed" _
& " ON ed.[Id ] = ef.FieldId" _
& " INNER JOIN tblUsers u" _
& " ON ef.[Value] = u.[Id]" _
& " WHERE t.[UserSign] = '(kö)'" _
& " AND t.[Status] = 0" _
& " AND ed.OwnerType = 9" _
& " AND ef.[Value] <> ''" _
& " AND ed.Id = 10019"
Rs_O2.Open sSQL_O2, Conn
'SQLfråga som hämtar UppdragsId från tblTask och användarsignatur från tblUsers beronde på vilken användare som är vald på en byggnad
sSQL_O1 = " SELECT t.[Id] AS TaskId, t.TaskNr, u.[Sign] AS UserSign, u.[Name] AS UserName, ef.[Value] AS UserId" _
& " FROM tblTask t" _
& " INNER JOIN tblObject o" _
& " ON t.Object1Nr = o.[Nr]" _
& " INNER JOIN tblExtraFieldData ef" _
& " ON o.[Id] = ef.OwnerId" _
& " INNER JOIN tblExtrafieldDef ed" _
& " ON ed.[Id ] = ef.FieldId" _
& " INNER JOIN tblUsers u" _
& " ON ef.[Value] = u.[Id]" _
& " WHERE t.[UserSign] = '(kö)'" _
& " AND t.[Status] = 0" _
& " AND ed.ownertype = 8" _
& " AND ef.[Value] <> ''" _
& " AND ed.Id = 10002"
Rs_O1.Open sSQL_O1, Conn
Logiken skall vara så här:
Om Rs_O2 ger träffar skall de posterna användas och de som resulterar från Rs_O1 skall ignoreras.
om bara Rs_O1 ger träffar skall skall de posterna användas.
Jag har provat en massa if-satser, men får inte till det....
Typ något sånt härnt:
If not Rs_O2.EOF then
while not Rs_O2.EOF
'använd resultatet från Rs_O2
Rs_O2.EOF.MoveNext
Wend
else
om båda resulterar poster använd Rs_O2.EOF
End if
Tack!
Mvh
Henrik
if Rs_O2.eof then
' använd RS_O1
else
' använd RS_O2
end if
Eller precis tvärtom, krångla inte till det i onödan.
Hmmm...
Det kanske blev en SQL-fråga av det hela...
Flytta i så fall...
SELECT t.[Id] AS TaskId,
t.TaskNr,
u.[Sign] AS UserSign,
u.[Name] AS UserName,
efO2.[Value] AS UserIdO2,
efO1.[Value] AS UserIdO1
FROM tblTask t
INNER JOIN tblObject o2
ON t.Object2Nr = o2.[Nr]
INNER JOIN tblExtraFieldData efO2
ON efO2.OwnerId = o2.[Id] AND efO2.[Value] <> ''
INNER JOIN tblExtrafieldDef edO2
ON edO2.[Id ] = efO2.FieldId AND edO2.OwnerType = 9 AND edO2.Id = 10019
INNER JOIN tblObject o1
ON t.Object1Nr = o1.[Nr]
INNER JOIN tblExtraFieldData efO1
ON efO1.OwnerId = o1.[Id] AND efO1.[Value] <> ''
INNER JOIN tblExtrafieldDef edO1
ON edO1.[Id ] = efO1.FieldId AND edO1.OwnerType = 8 AND edO1.Id = 10002
INNER JOIN tblUsers u
ON efO2.[Value] = u.[Id]
WHERE t.[UserSign] = '(kö)'
AND t.[Status] = 0
Resultatet blir:
16280 WWW000199 HL Henrik Lindell 10010 9999
16283 WWW000200 HL Henrik Lindell 10010 9999
Det borde bli en post till, men den visas ju inte eftersom där finns det inte värden på både efO2.[Value] AS UserIdO2 och efO1.[Value] AS UserIdO1
Hur skall det joinas för att det skall bli Null om det saknas?
Nästan iaf.,... :)
Mvh
Henrik
Då ska du använda outer joins.