Kan du inte göra på samma sätt då?
------------------
)|(
(o o)
-oo0-(_)-0oo-----
webeye.nu *hem*
vide@4sale.se
8 svar · 208 visningar · startad av Brimba
Hej!
Man kan om man vill veta om en tabell uppfyller ett visst krav göra på följande sätt:
SQLStmt = "Select id FROM tabell Where id = '" & Request.Form("test") & "'"
SET RS = Connection.Execute(SQLStmt)
Och sedan
If RS.EOF Then
Else
End If
Men om man vill göra det med ett öppet recordset.
Gör man då så här?
If RSObj("id") = Request.Form("test") Then
Else
End If
Eller hur gör man?
------------------
Mvh
Patrik
aka Brimba
Kan du inte göra på samma sätt då?
------------------
)|(
(o o)
-oo0-(_)-0oo-----
webeye.nu *hem*
vide@4sale.se
Hej!
Nej, jag vill inte behöva öppna stänga och så, emission sa att det är slöseri med kraft :)
Så jag vill alltså kolla i hela tabellkolumnen och någon post innehåller det värdet och gör det det så skall den utföra någonting, annars någonting annat.
Tack!
------------------
Mvh
Patrik
aka Brimba
Nä, vad jag sa var att det var onödigt att använda ett direkt, öppet recordset (alla recordset är öppna tills att man stänger dem). Du tjänar på att exekvera en SQL-fråga.
ADO har en find-metod och en seek-metod, men eftersom de inte riktigt fungerar med alla databaser är det dumt att fastna i användning av dem.
Eftersom all data du kommer åt ligger i recordsetet (inte i databasen), så måste du exekvera en ny fråga (om inte datan du söker finns i recordsetet).
Man skall ju sträva efter att stänga anslutningen så fort som möjligt.
Det behöver nödvändigtvis inte ta mycket mer kraft om du öppnar och stänger fler gånger efter varandra. det som tar kraft är tiden recordsetet är öppet (det kan finnas flera användare i kö)
Använd GetString för att hämta ett recordset, det är den snabbaste metoden. Tyvärr har den ett antal nackdelar när man skall formatera utdatan.
Med getString får man en hit, med vanliga recordset får man en hit per MoveNext. Kolla www.learn.asp och getstring
/T
------------------
Toonster
Saken är så här:
Låt oss säga att vi har en tabell:
id | namn
1 | Peter
2 | Abraham
3 | Wilhelmina
Sen så skall jag alltså kunna se om Request.Form("idnummer") är samma som något utav de som finns i databasen (mellan 1-3) i exemplet.
Men jag förstår därmed att det inte går, utan att stänga och köra en "vanlig" SQL fråga och därefter fortsätta med en If sats.
Ni får gärna förklara mer om getstring, vad man egentligen skall ha det till?
Eftersom man inte kommer åt databasen med det?
Tack
------------------
Mvh
Patrik
aka Brimba
Jo, det går att göra, men det ger med största sannolikhet sämre prestanda än två separata SQL-sökningar.
GetString kan vara användbart i det här fallet, även om det medför vissa andra problem.
Vad gör GetString? Jo, den hämtar ett helt recordset och lägger allt i en sträng. Mofsar den bara ihop allt? Nej, nej...man får själv bestämma hur rader och kolumner ska delas upp. Ett vanligt exempel, och en vanlig tillämpning är att skapa HTML-tabeller fort som ögat.
mTable=rs.GetString(,,"</td><td>","</td></tr><tr><td>"," ")
%>
<table><%=mTable%></table>
..spottar ut en tabell av hela recordset:et.
En annan tillämniing kan vara att populera listboxar etc. GetString ger då en prestandaökning, eftersom man slipper loopa över recordset:et.
[Redigerat av emission den 17 jun 2000]
Snabbare så här?
<%
response.write "<table>"
response.write rs.GetString(,,"</td><td>","</td></tr><tr><td>"," ")
response.write "</table>"
%>
;)
------------------
Mvh
Patrik
aka Brimba
www.datormaklarna.se
patrik@datormaklarna.se
[Redigerat av Brimba den 17 jun 2000]
Visst. Bra att du är med Brimba! ;)