jag förstår inte alls varför man vill köra select max/min på ett bitfält?
förklara i information vad det är för information du vill få ut av sql-frågan.
9 svar · 213 visningar · startad av theguru
Har nån nåt bra förslag vad jag kan göra åt detta?
jag håller på att convertera ett program från access till SQLserver2000.
Kosulterna som först skrev programmet har använt följande sqlsats för
att plocka ut om en rapport har skrivits ut eller ej
SELECT MIN(blnPRINTED) AS PRINTED, MAX(blnPRINTED) AS NOTPRINTED
FROM TREQAL
WHERE
lngBookSeqNo = @lngBookSeqNo
AND lngREQNO = @lngREQNO
Värdet som returneras om det är falskt 0 och sant -1 och fältet är en boolean i access.
I sqlserver måste vi ha det som bit och då skriker den på att man inte kan använda min
och max på bit data.
Vad säger du om detta?
Kan man kanske på nåt bra sätt plocka ut med att skriva om den lite eller måste vi tänka om helt
när vi ska använda sqlserver?
jag förstår inte alls varför man vill köra select max/min på ett bitfält?
förklara i information vad det är för information du vill få ut av sql-frågan.
en max boolean i access returnerar tydligen -1 om den innehåller en 1 och 0 om den innehåller nolla ich vice versa för min.
eftersom en boolean bara kan ha två olika värden, så förstår jag inte vad du vill ha ut.
jag förenklar min skabbigt formulerade fråga ovan till:
kan du i ord förklara vad du vill ha för resultat av sql-frågan, så är det enklare för oss att hjälpa dig.
mvh,
Jag är osäker på hur jag ska förklara det på bästa sätt. men resultatet hanteras på följande sätta i vb coden
If rst!PRINTED = -1 And rst!NOTPRINTED = 0 Then
FetchRequestPrintStatus = "PARTLY"
ElseIf rst!PRINTED = 0 And rst!NOTPRINTED = 0 Then
FetchRequestPrintStatus = "NO"
ElseIf rst!PRINTED = -1 And rst!NOTPRINTED = -1 Then
FetchRequestPrintStatus = "YES"
End If
Hoppas att det hjälper er att förstå vad printed och notprinted används till
ok. testa detta:
SELECT MIN(CONVERT(INT, blnPRINTED)) AS PRINTED, MAX(CONVERT(INT, blnPRINTED)) AS NOTPRINTED
FROM TREQAL
WHERE
lngBookSeqNo = @lngBookSeqNo
AND lngREQNO = @lngREQNO
ok jag har faktiskt också tänkt på detta men kommer då sant att retunera 1 eller -1 det känns som att jag isåfall borde ta bort - tecknet i VB koden.
Vad säger du har du koll på detta.
Jo, nu blir det väl bakvänt.
SELECT MAX(CONVERT(INT, blnPRINTED)) AS PRINTED, MIN(CONVERT(INT, blnPRINTED)) AS NOTPRINTED
FROM TREQAL
WHERE
lngBookSeqNo = @lngBookSeqNo
AND lngREQNO = @lngREQNO
och i VB-koden
If rst!PRINTED = 1 And rst!NOTPRINTED = 0 Then
FetchRequestPrintStatus = "PARTLY"
ElseIf rst!PRINTED = 0 And rst!NOTPRINTED = 0 Then
FetchRequestPrintStatus = "NO"
ElseIf rst!PRINTED = 1 And rst!NOTPRINTED = 1 Then
FetchRequestPrintStatus = "YES"
End If
Ok tack för hjälpen