Forum Doku Wiki Blog

Forumsarchiv 2001, Juli
Probleme mit ForwardOnly-Cursor

archivierte Beiträge lesen

  1. (DATENBANK) Probleme mit ForwardOnly-Cursor von Mathias, 06. 07. 2001, 18:20

Probleme mit ForwardOnly-Cursor

Der folgende Beitrag wurde am 06. 07. 2001, 18:20 Uhr von Mathias veröffentlicht.

Hi,

habe folgendes Proble: Wenn ich eine DB mittels SQL-String Abfrage und dabei einen ForwardOnly-Cursor verwende, dann kann ich die einzelnen Felder des Recordsets nur einmal anzeigen

rsProduct.Open "SELECT * FROM QueryProductLanguage WHERE LanguageID = " & LanguageID & " AND ProductID = " & ProductID, conn, 0, 1

[Aus dieser Abfrage kommt immer ganau ein Datensatz raus.]

<%=rsProduct("ProductDescription")%> [funktioniert perfekt]
<%=rsProduct("ProductDescription")%> [gleiche Zeile darunter nochmal erzeugt keinen Fehler, spuckt aber nur Null-Wert aus]

Wenn ich einen Static-Cursor nehme (..., conn, 3, 1) dann ist alles ok - warum?

Zu Info: NT4-Server, Access-DB, ODBC-Freigabe

Vielleicht weiß ja jemand rat

Mathias

Probleme mit ForwardOnly-Cursor

Der folgende Beitrag wurde am 06. 07. 2001, 18:49 Uhr von Mathias veröffentlicht.

Noch was festgestellt: das Problem tritt scheinbar nur bei Memo-Feldern auf.

Mathias

Probleme mit ForwardOnly-Cursor

Der folgende Beitrag wurde am 06. 07. 2001, 20:53 Uhr von Markus Mühlich veröffentlicht.

Hallo Mathias,

> Vielleicht weiß ja jemand rat

Zur Zeit nicht unmittelbar. Zumindest konnte ich das bis jetzt noch nicht reproduzieren.

> <%=rsProduct("ProductDescription")%> [funktioniert perfekt]
> <%=rsProduct("ProductDescription")%> [gleiche Zeile darunter nochmal erzeugt keinen Fehler, spuckt aber nur Null-Wert aus]

Ich halte diese Vorgehensweise jedoch grundsätzlich für falsch, da mit solchen Konstrukten der Server unnötig belastet wird. Besser ist ist das Recordset auszulesen

myVar = rsProduct("ProductDescription") usw.

und anschließend alle Objekte zu schließen.

Vorteil ist, daß Resourcen geschont werden und Du die Variable beliebig oft einsetzten kannst.

Viele Grüße aus Köln
Markus

BTW:
Trotzdem halte ich weiterhin die Fragestellung für interessant, ob Memos bei ForwardOnly tatsächlich nur einmal gelesen werden können.Werde mich dazu noch mal melden.

Probleme mit ForwardOnly-Cursor

Der folgende Beitrag wurde am 07. 07. 2001, 00:13 Uhr von Mathias veröffentlicht.

Hallo Markus,
vielen Dank auch nochmal für diesen Tipp

> Ich halte diese Vorgehensweise jedoch grundsätzlich für falsch, da mit solchen Konstrukten der Server unnötig belastet wird. Besser ist ist das Recordset auszulesen


Leider bietet M$ in dieser Richtung wenig Hilfestellung, provoziert oft sogar eine höchst uneffektive Programmierung.
Da werden Connections in Sessions gespeichert (z. B., wenn du direkt aus Access eine ASP-Datei "zaubern" lässt) - und dann wundert man sich, dass es ständig Probleme mit dem Zugriff gibt :-(

Ich probiere dein Rezept mal aus.
Ist die CacheSize des Recordset-Objekts eigentlich dafür wichtig?

Mathias

Greetinx
Berlin --> Cologne

Probleme mit ForwardOnly-Cursor

Der folgende Beitrag wurde am 07. 07. 2001, 00:26 Uhr von Mathias veröffentlicht.

Noch was:
Kann man nicht auch das komplette Recordset-Obejkt in eine neue Variable kopieren?

Set rs = Server.CreateObject("ADODB.Recordset")
Set rsProduct = Server.CreateObject("ADODB.Recordset")

rs.Open "SELECT * FROM QueryProductLanguage WHERE LanguageID = " & LanguageID & " AND ProductID = " & ProductID, conn, 0, 1
Set rsProduct = rs
rs.Close

If rs.EOF Then ...

Das funktioniert aber leider nicht. Bei der EOF-Abfrage gibt's 'ne Fehlermeldung.

Mache ich was falsch?

Probleme mit ForwardOnly-Cursor

Der folgende Beitrag wurde am 07. 07. 2001, 00:55 Uhr von Markus Mühlich veröffentlicht.

Hallo Mathias,

> Set rsProduct = rs
> rs.Close

> If rs.EOF Then ...

> Das funktioniert aber leider nicht. Bei der EOF-Abfrage gibt's 'ne Fehlermeldung.

> Mache ich was falsch?

Ehrlich gesagt, ja.

Du schließt das Objekt und willst danach auf das Objekt zugreifen. Das kann nicht funktionieren.

Nachdem Du das Recordset geöffnet und mit EOF überprüft hast, solltest Du die einzelnen Datenfelder auslesen

myVar(0) = rs("1.Datenfeld")
myVar(1) = rs("2.Datenfeld") usw.

danach die Verbindung schließen und auf Nothing setzen. Dadurch sind wiederum alle Resourcen des Servers freigegeben und können von anderen Quellen verwendet werden.

Viele Grüße aus Köln
Markus

Probleme mit ForwardOnly-Cursor

Der folgende Beitrag wurde am 07. 07. 2001, 01:08 Uhr von Mathias veröffentlicht.

Kann ich nicht irgendwie 'ne Kopie von dem Objekt machen? (News-Schlüsselwort?)

Mathias

Probleme mit ForwardOnly-Cursor

Der folgende Beitrag wurde am 07. 07. 2001, 01:30 Uhr von Markus Mühlich veröffentlicht.

Hallo Mathias,

>> Kann ich nicht irgendwie 'ne Kopie von dem Objekt machen?

Warum?
Pack alles in Variablen, schreib diese wenn nötig in das Application Objekt - und Du kannst immer und überall darauf zugreifen.

Oder erzähl mal, was Du wirklich vor hast.

Viele Grüße
Markus

Probleme mit ForwardOnly-Cursor

Der folgende Beitrag wurde am 07. 07. 2001, 01:53 Uhr von Mathias veröffentlicht.

Hallo,

> Pack alles in Variablen, schreib diese wenn nötig in das Application Objekt - und Du kannst immer und überall darauf zugreifen.

ich habe maher als 100 Datenfelder und habe wenig Lust, deinen Befehl 100mal zu kopieren und überall die Datenfeldnamen einzutragen.

Gibt's nicht 'ne Variante für Faule?

Ich finde es bai Javacsript so toll, da kannst du sagen
var meinDIV = document.getElementById('...')
und da hast dann bei deiner neuen Variable eine direkte Referenz auf das Objekt, kannst alle Eigenschaften abfragen und alle Methoden nutzen.
Sowas möchte ich auch mit dem rs-Obj machen.

m.

Probleme mit ForwardOnly-Cursor

Der folgende Beitrag wurde am 07. 07. 2001, 02:15 Uhr von Markus Mühlich veröffentlicht.

Hallo Mathias,

> ich habe maher als 100 Datenfelder und habe wenig Lust, deinen Befehl 100mal zu kopieren und überall die Datenfeldnamen einzutragen.

> Gibt's nicht 'ne Variante für Faule?

Klar, die gibt es.

<% for each field in rs.fields
   Response.Write(field.name & ": " &  field.value & "<br><br>")
   next%>

Viele Grüße aus Köln
Markus

Probleme mit ForwardOnly-Cursor

Der folgende Beitrag wurde am 07. 07. 2001, 00:44 Uhr von Markus Mühlich veröffentlicht.

Hallo Mathias,

> Ist die CacheSize des Recordset-Objekts eigentlich dafür wichtig?

Nein.

Mit CacheSize wird lediglich die Größe des Puffers für die Datensätze bestimmt, die der Server lokal als Speicherplatz reserviert/freihält.

Standardmäßig wird genau ein Datensatz gepuffert, was i.d.R auch vollkommen ausreicht, da ein höherer CacheSize mehr Serverresourcen für jeden Besucher bindet, aber nur geringfügige Geschwindigkeitsvorteile bietet.


Viele Grüße aus Köln
Markus

> Berlin --> Cologne
hui --> weit weg: Auch noch so warm?

© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4