Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: zymotic99 am 04.08.06 - 14:32:19

Titel: Größe der DB festlegen
Beitrag von: zymotic99 am 04.08.06 - 14:32:19
Hallo, ich habe ein kleines Anfängerproblem. Kann mir jemand erklären wie ich die Größe der Datenbank auf ein Dokument beschränken kann?

In der Datenbank soll lediglich ein Status gespeichert werden. Entweder "online" od. "offline". Steht der Status auf offline wird dieser überschrieben sobald sich jemand einlogged.


Danke für Eure Hilfe!

Mathias



Titel: Re: Größe der DB festlegen
Beitrag von: Axel am 04.08.06 - 14:39:35
Es ist nicht möglich eine Datenbank auf eine Anzahl von Dokumenten zu beschränken, sondern nur auf eine bestimmte Größe.

Du kannst allerdings in der ACL das anlegen von neuen Dokumenten verhindern.


Axel
Titel: Re: Größe der DB festlegen
Beitrag von: zymotic99 am 04.08.06 - 15:10:08
das ist leider ungünstig, da ich in der datenbank noch andere dokumente speicher und die dürfen wiederum nicht in der anzahl beschränkt sein.

nagut, dann werd ich wohl die view in eine xml umwandeln und mir immer das letzte dokument bzw. den letzten status rausgreifen..

irgendwie umständlich :-\
Titel: Re: Größe der DB festlegen
Beitrag von: Axel am 04.08.06 - 15:24:47
Ähmm, das hört sich aber jetzt ganz anders an, als die eigentliche Fragestellung.

Wenn es nur ein Status-Dokument geben darf, dann kannst du bei Speichern des Dokumentes (im QuerySave-Event) abfragen, ob es schon weitere Dokumente auf Basis dieser Maske gibt.


Axel
Titel: Re: Größe der DB festlegen
Beitrag von: umi am 04.08.06 - 15:47:39
und wenn du zuerst einen lookup auf eine View machst und prüfst ob ein dokument schon exisitiert?

was passiert wenn 2 gleichzeitig drauf zugreifen wollen?
Titel: Re: Größe der DB festlegen
Beitrag von: koehlerbv am 08.08.06 - 19:28:57
Wenn man genau wüsste, was der Fragesteller überhaupt mit der Beschränkung auf ein Dokument des betreffenden Typs bezwecken will, könnte man sicherlich mehr sagen. Eventuell lässt sich sowas ja sogar schon mit einem ProfileDocument erschlagen, vor allem, da diese Statusangabe mir sehr personenbezogen aussieht ...

Mehr Input, mehr Output, Mathias  ;)

Bernhard
Titel: Re: Größe der DB festlegen
Beitrag von: zymotic99 am 15.08.06 - 12:47:23
ok dann versuch ich mich mal an einer ausführlicheren beschreibung ;-)

ich versuche seit einiger zeit eine kundenberatung auf ajax basis unter notes domino  zu realisieren. da ich noch anfänger in domino bin, komm ich leider oft an einen punkt wo ich nicht mehr weiter komme.

ich bin momentan dabei den beraterstatus (online oder offline) in der db zu hinterlegen. über ajax wird der status asynchron aus der db abgefragt und beim benutzer im (chat-)fenster angezeigt. zur zeit sieht meine status-view so aus:
online
offline
online
offline
online
usw...
unvorteilhaft ist das alle stati darin stehn, obwohl ich ja nur den letzten brauche...

jedenfalls parse ich das ganze dann und lese mittles dom-operation den letzten status aus, der beim kunden letztendlich angezeigt wird:
Code
var requestedStatus = StatusXML.getElementsByTagName('text');
i = requestedStatus.length;     
var StatusList = requestedStatus[i-1].firstChild.nodeValue;

problem ist das die datenbank allmählich immer größer wird und das parsen immerlänger dauert.
schön wäre es wenn der vorherige status in der db immer durch den aktuellen überschrieben werden würde und ich nur ein einziges dokument hätte in dem entweder online od. offline steht :-)

dann habe ich leider noch ein anderes problem. ich habe mehrere views.
wird nun der status in die db geschrieben. dann wird komischerweise in jeder view ein neues dokument angezeigt.
geht beispielsweise der privatkundenberater online bzw. offline wird bei dem businesskundenberater ein leeres dokument angelegt- wie kann das sein?

vg, mathias

Titel: Re: Größe der DB festlegen
Beitrag von: klaussal am 15.08.06 - 13:04:36
Da wir (leider) immer noch nicht hellsehen können, musst Du schon mehr Details liefern.
Was für Docs werden angelegt, wie sieht der Select in den Views aus, etc etc ?
Titel: Re: Größe der DB festlegen
Beitrag von: zymotic99 am 15.08.06 - 13:13:55
also die js-funktion mit der ich den status an den agenten übermittel der den status in der db ablegt sieht folgerdermaßen aus:
Code
function SaveBusinessBStatus(stat){

var saveBusinessBStatus = stat;
var url = '/' + $('WebDBName_').value + '/Status2?OpenAgent'; 
var postArguments =  'BusinessB=' + saveBusinessBStatus;
callServer('POST', url, false, 1000, [..] , postArguments); 
}

der agent ist so aufgebaut:

Code
[..]
Set aktuelleDB = session.CurrentDatabase
[..]
status2 = getPostParameter("BusinessB")
Set StatusDoc = aktuelleDB.CreateDocument()
StatusDoc.BusinessB = status2
If StatusDoc.Save(True, True) Then
Print |erfolgreich übertragen|
[..]

Die VIEW besitzt die Spalte Status mit dem Field "BUSINESSB".

@klauss: was genau meinst du mit "Select in den Views" ?

Bei View Selection habe ich nichts eingetragen.

Titel: Re: Größe der DB festlegen
Beitrag von: klaussal am 15.08.06 - 13:17:28
Normalerweise filtert man über den Select, welche Docs man sehen möchte.

Also z.Bsp.: Select Form = "MeinMaskenname"
Titel: Re: Größe der DB festlegen
Beitrag von: zymotic99 am 15.08.06 - 13:29:38
irgendwie versteh ich nicht wozu das gut sein soll. ich habe die masken kunde und berater. in der maske berater habe ich für jeden berater jeweils 2 button's: login und logout. beim onclick auf einen button wird die entsprechende javascriptfunktion ausgeführt die den aktuellen status in die db über den agenten schreibt....

setze ich die selection bspw. auf:

SELECT Form = "berater"

wird gar kein document mehr angelegt.


Titel: Re: Größe der DB festlegen
Beitrag von: klaussal am 15.08.06 - 13:31:01
Hat das Doc auch ein Feld namens "form" ? Da steht nämlich der Maskennamen drin. Wenn nicht = böse Falle !
Titel: Re: Größe der DB festlegen
Beitrag von: zymotic99 am 15.08.06 - 13:34:45
ähm nein hat es nicht. wie leg ich das denn an und warum "böse falle"  :o

sorry hab noch nicht so den einblick in die domino umgebung....
Titel: Re: Größe der DB festlegen
Beitrag von: klaussal am 15.08.06 - 13:40:18
Ich will jetzt nicht "Adam + Eva" anfangen, aber anscheinend fehlen Dir die Basics. Besorge Dir Literatur (Herdt-Verlag) oder mach einen Kurs. Ansonsten wird das hier ein Frage/Antwortspiel ohne Ende.
Titel: Re: Größe der DB festlegen
Beitrag von: zymotic99 am 15.08.06 - 14:01:21
im prinzip möchte ich ja bloß wissen wie ich das form feld erstellen kann. mehr will ich doch gar nicht ;-)

wäre nett wenn sich jemand erbarmen würde und mir das kurz erklären könnte :-)
Titel: Re: Größe der DB festlegen
Beitrag von: klaussal am 15.08.06 - 14:06:17
Ok, dann lies mal in der Designer-Hilfe unter @setfield nach.

Meiner Meinung nach bringt das aber nix, weil Dir die Grundlagen fehlen.
Deshalb mein dringender Rat: lesen lesen lesen
Titel: Re: Größe der DB festlegen
Beitrag von: Thomas Schulte am 15.08.06 - 14:48:56
Gib deinen Agenten auch noch den Qualifizierten Namen des Beraters mit. Dann kannst du danach suchen und dir den aktuellen Status des Beraters jeweils immer im gleichen Dokument speichern.

Ein Feld Form kannst du genauso anlegen wie du es mit deinem Feld BusinessB bereits machst.

Und deine View sortierst du nach dem Berater Namen.
Titel: Re: Größe der DB festlegen
Beitrag von: Thomas Schulte am 15.08.06 - 14:50:45
Ach ja und was den Rest angeht stimme ich meinen Vorrednern zu. Besorgt dir die Kurse aus dem Herdt Verlag und geh die erst einmal durch.
Alternativ, such dir einen Mentor oder mach einen Kurs.
Titel: Re: Größe der DB festlegen
Beitrag von: zymotic99 am 15.08.06 - 16:05:54
@Thomas Schulte:

ich habe deinen rat befolgt und die übergabe an den agenten nun folgerdermaßen gestaltet:

Code
function SavePrivatBStatus(stat){
var savePrivatBStatus = stat;
var berater = "berater";
var privatB = "Privatkundenberater";
var url = '/' + $('WebDBName_').value + '/Status?OpenAgent'; 
var postArguments =  'Berater=' + privatB + '&Status=' + savePrivatBStatus + '&Form=' + berater;
callServer('POST', url, false, 1000,  [..], 'application/x-www-form-urlencoded', undefined, postArguments);
}

das feld "form" wird nun erzeugt. groß-/ und kleinschreibung scheint bei den feldwerten egal zu sein so wie es aussieht...

SELECT Form = "berater" funktioniert jetzt jedenfalls.

die view habe ich nach den beratern sortiert und categoried.
trotzdem werden nachwievor alle stati erfasst was mein eigentliches problem war und noch ist:

[Berater]                                  [Status]

Businesskundenberater
                                                 offline
                                                 online
Privatkundenberater
                                                 online
                                                 offline

ich möchte allerdings nur den aktuellen status haben:

[Berater]                                  [Status]

Businesskundenberater
                                                 online
Privatkundenberater                                               
                                                 offline

Titel: Re: Größe der DB festlegen
Beitrag von: Driri am 15.08.06 - 16:08:58
Der Agent macht genau das, was Du ihm sagst. Wenn Du nur den aktuellen Status haben möchtest, müßtest Du im Agenten erstmal prüfen, ob es zum Berater schon ein Dokument gibt und wenn dem so ist, in dem Dokument den Wert ändern.
Titel: Re: Größe der DB festlegen
Beitrag von: zymotic99 am 15.08.06 - 16:13:01
ok schonmal gut zu wissen. unter mysql gibt es ja einen befehl namens "update" mit dem man "alte" daten mit den "aktuellen" daten aktualisieren kann. wie macht man das denn nun unter domino??

hab mich auch schon diesbezüglich belesen. sollte es denn mit "ReplaceItemValue" gehen??
Titel: Re: Größe der DB festlegen
Beitrag von: Thomas Schulte am 15.08.06 - 16:19:06
der agent ist so aufgebaut:

Code
[..]
Set aktuelleDB = session.CurrentDatabase
[..]
status2 = getPostParameter("BusinessB")
Set StatusDoc = aktuelleDB.CreateDocument()
StatusDoc.BusinessB = status2
If StatusDoc.Save(True, True) Then
Print |erfolgreich übertragen|
[..]

Dein Agent ist Falsch. Du erzeugst doch jedesmal ein neues Dokument mit aktuelleDB.CreateDocument.
Such dir mal View.GetdocumentByKey in der online Hilfe und schau dir da das Beispiel an. Dann sollte dir eigentlich ein Licht aufgehen warum das so wie du es jetzt machst nicht funktionieren kann.
Titel: Re: Größe der DB festlegen
Beitrag von: klaussal am 15.08.06 - 16:27:05
Ich hab's ja gesagt: Fragen ohne Ende  ::)

Titel: Re: Größe der DB festlegen
Beitrag von: Thomas Schulte am 15.08.06 - 16:59:53
Stimmt Klaus Aber:
- Er geht zumindest nicht komplett planlos vor
- Hat auch schon selbstständig was gelesen. Zwar das falsche aber das geht mir bei Java Klassen auch immer so.
- Schreit nicht her mit dem Code.

Das gibt, bei mir zumindest, auch wenn die Fragen sehr basic sind, viele Pluspunkte und damit gutes Antwort Karma.
Titel: Re: Größe der DB festlegen
Beitrag von: klaussal am 16.08.06 - 07:52:21
@Thomas,

ok, da gebe ich Dir recht. Dann schau'm wir mal.
Titel: Re: Größe der DB festlegen
Beitrag von: zymotic99 am 16.08.06 - 11:12:44
danke erstmal für den zuspruch und das meine herangehensweise nicht für planlos abgestempelt wird  :)  ich werde mich jetzt auf jeden fall ersteinmal belesen. ich habe mir die bücher Lotus Notes 6 und Domino von Addison-Wesley und das Lotus Domino 6 Kompendium von Markt und Technik besorgt- damit ich mich in die grundlagen einarbeiten kann.

momentan habe ich leider das problem, dass ich etwas unter zeitdruck stehe, da das beratungstool bestandteil meiner diplomarbeit ist und man dafür ja nur einen gewissen zeitrahmen zu verfügung hat.

sollten probleme auftauchen würde ich mich weiterhin sehr freuen wenn ihr mir noch ein paar tipps geben könntet.

schonmal danke für die antworten!
mathias

Titel: Re: Größe der DB festlegen
Beitrag von: zymotic99 am 16.08.06 - 13:41:00
so ich habe mich mal an die agentenprogrammierung gewagt. der agent zur aktualisierung des dokumenteninhaltes sieht nun so aus:

Code
Sub Initialize
	
	Dim session As New NotesSession
	Dim aktuelleView As NotesView
	Dim aktuelleDB As NotesDatabase
	Dim StatusDoc As NotesDocument
	Dim item As NotesItem
	
	Dim status As String 
	Dim key As String
	
	key = "Privatkundenberater"
	
	Set aktuelleDB = session.CurrentDatabase
	Set aktuelleView = aktuelleDB.GetView ("By Category" )
	Set StatusDoc = aktuelleView.GetDocumentByKey (key )
	
	status = getPostParameter("Status")
	
	Set item = StatusDoc.ReplaceItemValue ("Status", status)
	
	If StatusDoc.Save(True, True) Then
		Print |erfolgreich übertragen| 
	Else
		Print |Fehler beim Speichern aufgetreten.| ' Fehlermeldung
	End If
	
	
End Sub

aus welchen grund auch immer funktioniert das ganze leider immer noch nicht.
der status wird nicht verändert...  ::)
Titel: Re: Größe der DB festlegen
Beitrag von: DerAndre am 16.08.06 - 14:04:44
Hi.

Überprüf noch, ob Du überhaupt ein Doc zurückbekommst und bau noch einen Fehlerhandle ein.

Ist Dein Key auch in der Kategorie vorhanden? Das GetDocumentByKey geht in die erste passende Kategorie und holt da das erste Doc heraus.

André

P.S. Oh sehe gerade, Version7, ich hoffe da hat sich nichts zu 6 geändert...
Titel: Re: Größe der DB festlegen
Beitrag von: klaussal am 16.08.06 - 14:14:11
Nach dem GetDocumentbyKey abfragen, ob Doc gefunden (siehe Hilfe).

Was sagt der Debugger ?
Titel: Re: Größe der DB festlegen
Beitrag von: zymotic99 am 16.08.06 - 14:25:44
hmm irgendwie erhalte ich keine ausgabe  :-[

       
Code
If Not (Statusdoc Is Nothing) Then
		Messagebox "$" & Statusdoc.GetItemValue ("Status"),, "Status"
	Else
		Messagebox "By Category " + key,, "Not found"
	End If 

der debugger läuft problemlos durch...
Titel: Re: Größe der DB festlegen
Beitrag von: DerAndre am 16.08.06 - 14:29:29
Hmhmhm.

Works as Crosspost (http://www.dominoforum.de/modules/newbb/viewtopic.php?topic_id=13227&forum=47)


Es muss heißen

Messagebox "$" & Statusdoc.GetItemValue ("Status")(0),, "Status"

André
Titel: Re: Größe der DB festlegen
Beitrag von: klaussal am 16.08.06 - 14:31:14
Und Schluss.....
Titel: Re: Größe der DB festlegen
Beitrag von: Glombi am 16.08.06 - 14:34:33
@zymotic99: Das ist nun kein feiner Zug, in einem anderen Forum mitten im Geschehen und ohne jeweiligen Querverweis den gleichen Thread aufzumachen.  :(
Titel: Re: Größe der DB festlegen
Beitrag von: zymotic99 am 16.08.06 - 14:35:25
sorry auch damit erhalte ich keine anzeige...

@glombi: kann man sich denn nicht in einem anderen forum zu dem gleichen thema informationen einholen?
Titel: Re: Größe der DB festlegen
Beitrag von: Glombi am 16.08.06 - 14:36:30
Wenn das so weiter geht mache ich das hier gleich dicht !
Titel: Re: Größe der DB festlegen
Beitrag von: DerAndre am 16.08.06 - 14:39:53
Jepp.

Vor allem hier ND7 da ND6. Was denn nun?

Doch darf man. Aber bitte mit Hinweis darauf. Steht auch in den Nutzungsbedingungen (http://atnotes.de/projekte/bp/team/tmc/_forumsregeln/rules001.html#23).

André
Titel: Re: Größe der DB festlegen
Beitrag von: zymotic99 am 16.08.06 - 14:44:53
ok sorry, dann werde ich das natürlich in dem anderen forum tun.



Titel: Re: Größe der DB festlegen
Beitrag von: zymotic99 am 16.08.06 - 15:00:08
nunja die msgbox sagt folgendes:

16.08.2006 14:54:32   HTTP Server: Agent 'Status1' error: Object variable not set

[edit]:

16.08.2006 15:07:34   HTTP Server: Agent message: $online
16.08.2006 15:07:34   HTTP Server: Agent 'Status1' error: Notes error: You cannot update or delete the document(s) since you are not listed as an allowable Author for this document
16.08.2006 15:08:59   HTTP Server: Agent message: $online
16.08.2006 15:08:59   HTTP Server: Agent 'Status1' error: Notes error: You cannot update or delete the document(s) since you are not listed as an allowable Author for this document

hört sich schonmal besser an. sieht so aus als würden mir die rechte fehlen.
Titel: Re: Größe der DB festlegen
Beitrag von: klaussal am 16.08.06 - 15:10:58
Zitat
der debugger läuft problemlos durch...

Ja, was denn nun ? Allmählich fühlt man sich hier wirklich vera....t  >:D
Titel: Re: Größe der DB festlegen
Beitrag von: zymotic99 am 16.08.06 - 15:16:21
ok, ich sehs ja ein, das bringt nichts. schluss jetzt :-X
Titel: Re: Größe der DB festlegen
Beitrag von: Thomas Schulte am 16.08.06 - 15:16:53
Das bedeutet das du wenn deine Angaben bisher stimmen entweder irgendwo in deinem Dokument mindestens ein Autorenfeld stehen haben musst, oder das die Rechte mit denen du aus dem Internet zugreifst nicht stimmen.

Und ich stimme Andreas und Klaus zu. Crossposts sind a kein feiner Zug und lösen b auch bei mir allergische Reaktionen aus wenn sie nicht gekennzeichnet werden.

Klaus ich glaube nicht das er die Live situation wirklich mit dem Debugger nachstellen kann. Von außen kommt er ja warscheinlich ohne das er sich vorher autentifiziert hat.
Titel: Re: Größe der DB festlegen
Beitrag von: zymotic99 am 17.08.06 - 09:18:15
hallo, mir war leider für den moment nicht bewusst, dass crossposts nicht die "feine art" sind. ich werde sowas in zukunft auf jeden fall kennzeichen. nochmal sorry.

das "updaten" des dokuments läuft nun soweit. meine acl einstellungen waren nicht korrekt. ich habe nun einen "anonymous" user erstellt mit designer-rechten und damit funktioniert es.  :)

nochmal sorry wenn ich euch mit meinen fragen gestresst habe.

vg und danke,
mathias
Titel: Re: Größe der DB festlegen
Beitrag von: Glombi am 17.08.06 - 09:24:30
Alles klar !

Andreas