Jag har en fråga i en Access databas där jag visar resultatet i en ASP sida. Jag har testat att slänga in en massa if satser :-) <code> Det blir iaf blankt. Hej! Samma resultat: Hej ! Tack nu är resultatena tillförlitligare. Jag försöker fortfarande att få till det här. Hmm ,är inte säker på att jag förstår vart du vill komma. RobertW skrev: Funkar det inte så här heller? Det jag vill göra är att jämföra två avdelningars resultat en viss vecka och en viss typ av resultat (det är olika resultat som registreras). Då har jag en SQL-sats som skall hämta ”villkoren” från ett formulär. <code> Ok, nu förstår jag lite mer ... Jag får inte till det, men jag inbillar mej att detta skall funka. Denna funkar alltid....<code> Nu är det nog nära :-) tror fortfarande att lösningen är denna. har förtydligat exemplet lite. Nu ramlade 10örning ner :-)Text inte blankt!
När man skall visa resultatet så får man först ställa villkor i ett formulär.
I frågan så finns bla fältet ”Avdelning” och ”Resultat”
Man väljer två villkor T ex att man vill se ”resultat” registrerat för ”Avd2” och ”Avd6”
Nu mitt problem:
Om det inte är något resultat registrerat för Avd2 så blir det bara blankt, medan värdet för Avd6 visas.
Jag vill att om det är så att det inte finns något registrerat på Avd2 så skall det visas en text ”Inget resultat registrerat” istället för att det är bara blankt.
Är det någon vänlig själ som kan hjälpa mej
Fältet resultat är i tal format.
Mvh
/RobertWSv: Text inte blankt!
Släng in en IF sats som kollar om ditt RS("avd2") ="" är den det så skriv ut tomt, annars skriv ut ditt värde.
//Anna-KarinSv: Text inte blankt!
Jag har försökt med:
<code><%
dim avd
avd=rs("avd")
if(IsNull(avd)) then avd = "Inget registrerat..."
Else "avd"
end if
%>
</code>
Jag har även testat med "LEN" och lite av varje.
Jag gör säkert något elementärt fnutt-fel eller så.
Har någon lust så får du gärna skicka in ett exempel.
Mvh
/RobertWSv: Text inte blankt!
<%
Dim avd
avd = "" & rs("avd")
If Len(avd) > 0 Then
Response.Write avd
Else
Response.Write "Inget registrerat..."
End if
%>
</code>Sv: Text inte blankt!
Jag har testat fram och tillbaka och när det inte är ett värde så kommer inte texten fram.
Jag kollade med att skriva in fel variabel :
<code>
<%
Dim avd
avd = "" & rs("avd")
If Len(avdddddddddd) > 0 Then
Response.Write avd
Else
Response.Write "Inget registrerat..."
End if
%>
</code>
Då kom texten "Ingent registrerat..." när det fanns ett värde, men det var blankt när det saknades ett värde.
Om jag ändrar ">0" till "<0" då funkar det fast det blir ju fel, men då kommer texten när det är ett värde.
men när det inte finns ett värde då blir det blankt.Sv: Text inte blankt!
Snabbt tips:
Kolla så att inte resultatet är ett mellanslag eller liknande. Se om inte det här fungerar:
<code>
If Len(Trim(avd)) > 0 Then
...
</code>
* Fotnot: Trim tar bort alla mellanslag i början och slutet av en sträng.Sv: Text inte blankt!
Ändrar jag > till < så funkar det bakframt så att säga, jag testade även med >=0 men texten kommer inte när det inte är registrerat något resultat.
Mvh
/RobertWSv: Text inte blankt!
<code>
dim typ
dim avdalt1
dim avdalt2
set typ=Request.form("typ")
set avdalt1=Request.form("avdalt1")
set avdalt2=Request.form("avdalt2")
SQL = "SELECT avdelning, typ, vecka, summa From Qry_resultat_visa WHERE vecka =" & vecka & "AND typ='" & typ & "'AND (avdelning = '"& avdalt1&"'OR'"& avdalt2&"');"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open SQL, Conn
do while not rs.eof
IF RS.EOF THEN
Response.write "Posten hittades inte"
ELSE
</code>
Det kan nog vara lite tokigt här :-) det är try and error som har praktiserats, men det funkar ganska så bra. lite roddit är det, för ibland så visas avd4 när jag har valt avd2... men det får jag ta senare.
PS:tack för att ni försöker...Sv: Text inte blankt!
Jag tror att du kanske behöver komplettera din select sats lite.
SQL = "SELECT avdelning, typ, vecka, summa From Qry_resultat_visa WHERE vecka =" & vecka & "AND typ='" & betext & "'AND (avdelning = '"& avdalt1&"' OR avdelning = '"& avdalt2&"');" Sv: Text inte blankt!
det där betext var felskrivet om någon undrar, men det blev mycket bättre med att jag lade till fältet efter "OR" oxå. (efter tipset)
Men fortfaranade är det bara blankt när det inte finns något värde.
Skall "Len" och "IsNull" fungera även på text ?
(jag håller på att testa på några andra formulär jag har för att hitta en lösning)
/RobertWSv: Text inte blankt!
Kan det vara så att att det inte finns något som kan vara "0", det är iof bara jag som kan veta det, men jag menar att om jag ställer olika krav som skall uppfyllas och det är inget som uppfylls så kan ju inte något vara "0" så att säga.
För om inget resultat är registrerat för den avdelning jag söker så kommer den ju inte med ett värde heller.
Jag kanske tänker fel men eftersom era tips funkar när jag vänder på det, så att texten skall visas om det är ett värde, då funkar det.
Det jag söker måste ju vara att om något krav i SQL-satsen inte uppfylls så skall texten visas "Inget resultat registrerat".
Alltså inte värdet eftersom det inte kommer något värde.
Jag kanske surrar men om någon förstår mej så tar jag gärna emot hjälp.
/RobertWSv: Text inte blankt!
Om du utför en select sats och inga poster uppfyller de villkor du specifierat så får du ju inga poster tillbaka och detta hittar du ju som du själv har skrivit mha rs.eof = true.
Kan du försöka beskriva problematiken lite tydligare.Sv: Text inte blankt!
Om jag ändrar ">0" till "<0" då funkar det fast det blir ju fel, men då kommer texten när det är ett värde.
men när det inte finns ett värde då blir det blankt.
Hmmm kan du inte ha en If Not sats istället föe en If ? Då får du det ju rätt.
Men det kanske är fel lösning... Jag är inte heller så bra på detta, men jag försöker.. :)Sv: Text inte blankt!
<code>
<%
Dim msg
msg = "Inget registrerat..."
If Not IsNull(rs("avd")) Then
If Len(avd) > 0 Then
msg = rs("avd")
End if
End if
Response.Write msg
%>
</code>
//
JanneSv: Text inte blankt!
Det är T ex. två listrutor där man väljer vilka avdelningar man vill jämföra. ” avdalt1” och ” avdalt2”.
Om man där väljer att jämföra Avdelning-1 med Avdelning-6 vilket resultat de hade Vecka 48 osv.
Om det inte är något resultat registrerat på Avdelning-1 för vecka 48 så blir det bara resultatet för Avdelning-6 som visas.
Det jag vill är att förutom att resultatet för Avdelning-6 så skall det även visas att det inte finns något resultat för Avdelning-1 registrerat.
Först så tänkte jag att om det är 0 som resultat så skall texten visas men sedan så kom jag att tänka på att det finns ju inget som är 0 .
För det finns ingen post där det är 0 registrerat, det blir en post först när man har registrerat ett resultat. Iof så kan man registrera ett resultat som är 0 men det förekommer inte.
Så som jag tänker nu så borde det vara så att om villkoret från formulärets ruta ”Avdalt1” inte har någon träff i databasen/frågan så skall texten ”Inget resultat registrerat…” kan man dessutom få att det står ”Inget resultat registrerat för Request.form("Avdalt1")” så skulle det ju vara ännu bättrar.
Du ser min SQL-sats tidigare i tråden.
/RobertWSv: Text inte blankt!
dim typ
dim avdalt1
dim avdalt2
set typ=Request.form("typ")
set avdalt1=Request.form("avdalt1")
set avdalt2=Request.form("avdalt2")
SQL = "SELECT avdelning, typ, vecka, summa From Qry_resultat_visa WHERE vecka =" & vecka & "AND typ='" & typ & "'AND (avdelning = '"& avdalt1&"' OR avdelning = '"& avdalt2&"');"
</code>Sv: Text inte blankt!
Så här kan du göra (kompletterar din SQL sats).
Antingen skriver du ut resultatet direkt där jag kommenterat eller så kan du samla det i tex en array.
rs.open sql,conn,3,2
do while rs.eof = false
if isnull(rs.fields("avdalt1")) = false then
' avdelning 1 har träff
else
' ingen träff
end if
if isnull(rs.fields("avdalt2")) = false then
' avdelning 2 har träff
else
' ingen träff
end if
rs.movenext
loop
rs.closeSv: Text inte blankt!
Jag får detta meddelande:
-------------------------------------------------------------------------------------------------
Error Type:
ADODB.Recordset (0x800A0CC1)
Item cannot be found in the collection corresponding to the requested name or ordinal.
-------------------------------------------------------------------------------------------------
När jag kollar efter vad jag har gjort för fel så hittar jag:
..........................................................................................................................
This is because they weren't looking for "column" from the recordset, they were looking for an expression that
represents the COUNT of "column" in the table. There are at least three ways to obtain values of aggregate functions
from a recordset.
The first is to simply use ordinal numbers instead of the name of the column. This requires no modification to the
existing SQL statement, and has the added bonus of being slightly faster (though for most users I recognize this will
be negligible, and can make the ASP code harder to maintain if the SQL statement will change in the future).
<code>
<%
set conn = Server.CreateObject("ADODB.Connection")
conn.open "<connection string>"
set rs = conn.execute("SELECT COUNT(column) FROM table")
response.write rs(0)
%>
</code>
The second two solutions involving adjusting the SQL statement to use an alias for the expression:
<code>
<%
set conn = Server.CreateObject("ADODB.Connection")
conn.open "<connection string>"
set rs = conn.execute("SELECT columncount = COUNT(column) FROM table")
response.write rs("columncount")
set rs = conn.execute("SELECT COUNT(column) AS columncount FROM table")
response.write rs("columncount")
%>
</code>
..........................................................................................................................
Men jag får inte till det.
/RobertWSv: Text inte blankt!
<%
If RecSet.EOF Then
Response.Write "Ingen data i databasen."
Else
Response.Write "Datan..."
End If</code>Sv: Text inte blankt!
Skulle en erfaren vbscript programmerare se mej labba så blev han/hon garanterat gråtfärdig.
Troligen är det här enklare än man tror.
Men nu har jag ett resultat som är mycket nära det jag vill ha.
Det resultat jag nu har är ”registrerat” Ej registrerat” alltså inte själva värdet/avdelningsnamnet :-)
Det resultat jag vill ha om jag har villkoret: ”vecka 48” ”Avdelning1” och ”Avdelning6” från ”villkorsformuläret”
(i exemplet så är det inget värde registrerat för avdelning6 på vecka48 i databasen (finns det inget registrerat värde vecka48 för avdelning6, så finns det inte någon post för avdelning6 heller))
Önskat resultat:
Vecka 48
Avdelning1: 356
Avdelning6: Inget registrerat
Men det är helt ok också om det blir:
Vecka 48
Avdelning1: 356
Inget registrerat
Som jag hade från början:
Vecka 48
Avdelning1: 356
Som jag har nu:
Registrerat
Inte registrerat
(jag testar för fullt med att få in rs(avd) men det blir bara fel)
Det här är koden jag nu testar med:
<code>
<%
rs.open sql,conn,3,2
do while rs.eof = false
if Len(Trim("avdalt1")) > 0 = false then
Response.write "Registrerat"
else
Response.write "Inget registrerat"
end if
if Len(Trim("avdalt2"))> 0 = false then
Response.write "Registrerat"
else
Response.write "Inget registrerat"
end if
rs.movenext
loop
rs.close
%>
</code>
Jag kunde inte använda:
<code>
if isnull(rs.fields("avdalt1"))
</code>
För då fick jag det tidigare felet jag beskrev.
Jag vet att jag skulle kunna använda det på fältet ”summa (tal)” men jag fick inte med mej värdet för fältet Avdelning, så det blev ingenting.
Förlåt att jag är så dålig på att förklara, den här tråden skulle inte ha blivit så lång om jag hade kunnat förklara bättre för jag tror att flera av er skulle säga ”jasså menar han så” ”ja men det är ju enkelt” om ni förstod vad jag var ute efter.
RobertWSv: Text inte blankt!
if isnull(rs.fields("avdalt1")) = false then
if len(rs.fields("avdalt1")) > 0 then
' avdelning 1 har träff
else
' ingen träff
end if
else
' ingen träff
end if
...och likadant för avdalt2.Sv: Text inte blankt!
Det blir ju två Recordset jag får använda för att få det resultat jag vill ha.
Om det tomt så skriv "inget resultat"
annars resultat
För om inte posten finns så kan den ju inte vara tom/null
/RobertW