is een recordset nodig?

Status
Niet open voor verdere reacties.

JEPEDEWE

Terugkerende gebruiker
Lid geworden
14 jun 2006
Berichten
1.722
Hallo,
deze SQL geeft me, als ik hem laat lopen exact wat ik moet hebben (dankzij jullie)

PHP:
SELECT TOP 1 Left(GETUIGTHER,1) AS initiaal, Count(GETUIGTHER) AS AantalVanGETUIGTHER
FROM DATA
WHERE (KODELANG)="221093870091"
GROUP BY Left(GETUIGTHER,1)
ORDER BY Left(GETUIGTHER,1) DESC;

ik vraag me nu af,
Als ik dit in code wil gebruiken dan schrijf ik steeds iets als:

Dim db As Database
Dim TB As Recordset
Dim SQL As String

Set db = CurrentDb()
SQL = "....................(zie hoger)..............."
Set TB = db.OpenRecordset(SQL)

en dan doe ik iets met bvb TB!Initiaal

maar
MOET ik steeds een recordsset aanmaken om iets met het resultaat van een sql te doen?
Is er dan een andere manier?

Kunnen jullie mij dat eens proberen uit te leggen?

Bedankt
JP
 
Dat ligt eraan wat je ermee wilt doen. Als je een select statement uitvoert krijgt je een recordset als resultaat. Wat zou je er anders mee willen doen? Voer je een DELETE oid uit, dan krijg je hooguit het aantal verwerkte records terug.
Je kunt je code wel wat korter maken door geen variabele voor de database op te nemen. En ook de SQL hoeft niet in een aparte string, maar dat maakt het wel makkelijker te controleren en duidelijker te lezen.
Deze code is echter helemaal okay hoor:
Code:
dim rst as recordset
set rst = currentdb.openrecordset("SELECT initiaal FROM Data")
'vervolgens kun je referenen naar rst(0) of rst("Initiaal")
Maar uhm, wat zou je nu anders willen zien dan een recordset?
 
Het resultaat is 1 record
Ik wil alleen het initiaal-veld van dat record om hier iets mee te doen
Dus..... Verandert dat iets aan de zaak?
Merci
Jp
 
Nope, want dat ene record kan nog steeds tot 40 velden bevatten (iig tot 2003, weet niet of dat aantal daarna groter is geworden).
Maar ik zie niet echt wat het probleem is dat je de data in een recordset terugkrijgt?
 
Ik schreef:

PHP:
Dim a As String
Dim rst As Recordset
Set rst = CurrentDb.OpenRecordset("SELECT TOP 1 Left(GETUIGTHER,1) AS initiaal, Count(GETUIGTHER) AS AantalVanGETUIGTHER FROM Data WHERE(KODELANG) = '221093870091' GROUP BY Left(GETUIGTHER,1) ORDER BY Left(GETUIGTHER,1) DESC;")
a = rst("initiaal")

en kreeg exact wat ik wou... heel erg bedankt
Wat het recordset-gedoe betreft
Ik las eens ergens dat recordsets die je aanmaakt binnen een gans project, eigenlijk blijven bestaan en zo snel je geheugen vollaadt, wat de stabiliteit negatief zou beïnvloeden
kan prietpraat zijn en misschien moet je ergens een commando geven dat recordsets "clearen", weet ik veel
vandaar mijn vraag
maar hpou wel van de gebalde manier van programmeren
heel erg bedankt
JP
 
En dat hoeft niet, want een Recordset wordt gekilled als de procedure klaar is. Dus er blijft niks achter. Neemt niet weg dat rs = nothing natuurlijk geen kwaad kan, al was het maar ter verhoging van je typsnelheid ;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan