Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: reraru am 21.01.05 - 12:17:02

Titel: LS > ODBC > Anzahl Datensätze -eknori-
Beitrag von: reraru am 21.01.05 - 12:17:02
Mahlzeit zusammen!

Ich habe mir im Forum ein Beispiel von Eknori angesehen und habe ein kleines
Problem.

Hier der CODE:

Code
Option Public
Uselsx "*lsxodbc"
'Use "LibLOG"
%INCLUDE "LSCONST.LSS"

Sub Click(Source As Button)
	
	Dim Session As New NotesSession
	Dim db As NotesDatabase   
	Set db = Session.currentdatabase   
	Dim view As NotesView   
	Dim Del As NotesDocument   
	Dim Con As New ODBCConnection   
	Dim Qry As New ODBCQuery   
	Dim res As New ODBCResultSet   
	
   ' alle Kunden vor neuem Import aus Notes DB löschen
	Dim collection As NotesDocumentCollection
	Set collection = db.AllDocuments
	If collection.Count >= 1  Then
		Call collection.RemoveAll ( True )
	End If
	
    'Verbindungsaufbau zur AS/400
	RetCode% = Con.ConnectTo("ANCRADTA","USER","PASSWORD")
	
	Set Qry.Connection = Con     '   
	Qry.SQL = "SELECT * FROM ANCRADTA.KDSTAMPF WHERE KDPRGR = 30 ORDER BY KDKDNR"
	Set Res.Query = Qry
	Res.Execute
	RetCode% = Res.FirstRow    
	Do While RetCode% =True
		'ret$ = Trim(Cstr(Res.GetValue("KDPRGR")))
		'If ret$ = "30" Then      
		Dim Doc As New NotesDocument(db)          
		doc.form = "kundeninfo_1"
		doc.produktgruppe = Cstr(res.GetValue("KDPRGR"))
		doc.kundennummer = Cstr(res.GetValue("KDKDNR"))
		doc.name1 = Cstr(Res.GetValue("KDNAM1") )
		doc.name2 = Cstr(Res.GetValue("KDNAM2"))
		doc.strasse = Cstr(Res.GetValue("KDSTR1"))
		doc.PLZ = Cstr(Res.GetValue("KDPLZ1"))
		doc.Ort = Cstr(Res.GetValue("KDORT"))      
		Call doc.save (True, True)
	'End If
		RetCode% = Res.NextRow
	Loop
	RetCode% = Res.Close( DB_CLOSE )
	RetCode% = Con.Disconnect 
	
End Sub

Eigentlich fiunktioniert die Sache genau so wie ich es gerne hätte!
Das komische ist nur das er mir immer zu wenig Datensätze anzeigt.
Ich erhalte immer 771 DS.

Das ist mir unerklärlich!

Hat vielleicht jemand eine Idee? Könnte mir vorstellen das es nur eine
Kleinigkeit ist.

Die ODBC Verbindung führt zu einer IBM iSeries bzw. AS/400.

Vielen Dank im Voraus!

Gruß René
Titel: Re: LS > ODBC > Anzahl Datensätze -eknori-
Beitrag von: Colibri am 21.01.05 - 12:56:48
Spiel mal ein bißchen mit der CacheLimit property aus der ODBCREsultSet Klasse rum. Eventuell ein
result.cachelimit = DB_None
Titel: res.CacheLimit
Beitrag von: reraru am 21.01.05 - 14:04:15
Hi!

Habe gerade mal folgende Code-Zeile eingebaut:

Code
res.CacheLimit = limit&

Jetzt läuft es. Verstehe aber noch nicht wofür das "limit&" steht!???

Het jemand ne Idee?
Titel: Re: LS > ODBC > Anzahl Datensätze -eknori-
Beitrag von: Glombi am 21.01.05 - 14:10:14
limit& bedeutet eine implizit deklarierte Variable vom Typ Long.

Aus der Hilfe:
CacheLimit property 

Beispiel
Read-write. The maximum number of rows to be cached in memory.
Defined in
ODBCResultSet
Data type
Long
Syntax
To get: limit& = odbcResultSet.CacheLimit
To set: odbcResultSet.CacheLimit = limit&

Usage
The limit is DB_ALL (full set), DB_NONE (minimum set), or the number of rows to store. DB_NONE means that only a very small window, including the current row, is kept in memory.

M.a.W: Du kannst in Deinem Script anstelle von limit& entweder DB_ALL oder DB_NONE schreiben. Du willst wohl DB_ALL haben.


Andreas
Titel: Re: LS > ODBC > Anzahl Datensätze -eknori-
Beitrag von: reraru am 21.01.05 - 14:15:34
Hi Glombi!

Ich hatte zuerst folgendes:

res.CacheLimit = DB_ALL

Dabei hat sich mein komplettes Notes verabschiedet.

Nachdem ich noch einmal in der Hilfe des Designers gelesen habe, fand ich das
was Du auch gerade gepostet hast.

Wenn limit& eine deklarierte Variable vom Typ Long ist, welchen Wert hat Sie dann?
 ::)
Titel: Re: LS > ODBC > Anzahl Datensätze -eknori-
Beitrag von: Glombi am 21.01.05 - 14:17:47
Wenn Du der Variablen vorher keinen Wert zugewiesen hast, hat diese den Wert 0.

Andreas
Titel: Re: LS > ODBC > Anzahl Datensätze -eknori-
Beitrag von: reraru am 21.01.05 - 14:19:29
 ;D

OK! Du hast recht!

"0" würde somit wahrscheinlich "kein Limit" oder DB_ALL gleichkommen, right?

 ;D
Titel: Re: LS > ODBC > Anzahl Datensätze -eknori-
Beitrag von: Glombi am 21.01.05 - 14:21:00
Genau  ;)

Du kannst es mit einem einfachen Script testen:

Msgbox limit&
Msgbox DB_ALL

ergibt 2x 0

Msgbox DB_NONE
ergibt übrigens 4
nun ja...

Andreas
Titel: Re: LS > ODBC > Anzahl Datensätze -eknori-
Beitrag von: reraru am 21.01.05 - 14:25:27
Du hast wieder recht!  8)

Das war heute mein erster Versuch in Lotus Script. In VB hätte ich es mit sicherheit
genau so gemacht. Miti dem LS Debugger bin ich noch nicht so vertraut!


Vielen Dank und ein schönes Wochenende wünscht


René