webForumDet fria alternativet
Logga in / Bli medlem

min och max boolean i sqlserver?

ASP

9 svar · 213 visningar · startad av theguru

Medlem sedan juli 2000411 inlägg
Trådstart#1

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?

Medlem sedan juni 200032 967 inlägg
#2

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.

Medlem sedan juli 2000411 inlägg
#3

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.

Medlem sedan juni 200032 967 inlägg
#4

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,

Medlem sedan juli 2000411 inlägg
#5

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

Medlem sedan juni 200032 967 inlägg
#6

ok. testa detta:

SELECT MIN(CONVERT(INT, blnPRINTED)) AS PRINTED, MAX(CONVERT(INT, blnPRINTED)) AS NOTPRINTED 
FROM TREQAL
WHERE 
lngBookSeqNo = @lngBookSeqNo 
AND lngREQNO = @lngREQNO
Medlem sedan juli 2000411 inlägg
#7

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.

Medlem sedan juni 200032 967 inlägg
#8

bra fråga.

gissar:
false 0
true 1

mvh,

Medlem sedan dec. 200012 464 inlägg
#9

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
Medlem sedan juli 2000411 inlägg
#10

Ok tack för hjälpen

245 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
122 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)