webForumDet fria alternativet

min och max boolean i sqlserver?

9 svar · 213 visningar · startad av theguru

theguruMedlem sedan juli 2000412 inlägg
#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?

------------------
ITweb

@ndersMedlem sedan juni 200026 914 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.

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
can i borrow your goat?
</A>

theguruMedlem sedan juli 2000412 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.

------------------
ITweb

@ndersMedlem sedan juni 200026 914 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,

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
can i borrow your goat?
</A>

theguruMedlem sedan juli 2000412 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

------------------
ITweb

@ndersMedlem sedan juni 200026 914 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

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
can i borrow your goat?
</A>

theguruMedlem sedan juli 2000412 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.

------------------
ITweb

@ndersMedlem sedan juni 200026 914 inlägg
#8

bra fråga.

gissar:
false 0
true 1

mvh,

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
can i borrow your goat?
</A>

LarsGMedlem sedan dec. 200012 465 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

------------------
essentitia preter non sans multiplicandum

theguruMedlem sedan juli 2000412 inlägg
#10

Ok tack för hjälpen

------------------
ITweb

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