Autor Thema: Wert in ein Feld einer anderen DB schreiben  (Gelesen 1344 mal)

Offline Fbaum

  • Aktives Mitglied
  • ***
  • Beiträge: 220
  • Geschlecht: Männlich
  • Homer for ever !
Wert in ein Feld einer anderen DB schreiben
« am: 20.08.02 - 13:37:41 »
Hallo,
ich habe 2 DB´s. Aus DB1 lese ich den Namen und die Nummer eines Mitarbeiters aus. In DB2 werden diese Werte eingetragen. Nun möchte ich beim Speichern des Dokumentes, daß der Wert der Nummer um 1 erhöht wird und anschließend in die DB1 zurückgeschrieben wird. Ist sowas möglich??
Danke schon mal.
Gruß FBaum
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »

Offline wbtvof

  • Frischling
  • *
  • Beiträge: 13
  • Geschlecht: Männlich
  • ...more than just internet!
Re: Wert in ein Feld einer anderen DB schreiben
« Antwort #1 am: 21.08.02 - 17:26:07 »
am besten eigent sich hierfür der querysave event.
dort erhöhst du einfach den feldwert um eins und speicherst in db1 die werte entsprechend.

vergiss die security nicht;
der user muss in db1 jedenfalls author-rechte auf "sein" dokument haben.
(sollte wohl nicht alle dokumente bearbeiten dürfen...)

zudem darf er in db1 nicht einfach so rein um dort mit seinen rechten seine dokumente zu ändern...

lg flo.
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »

Offline Fbaum

  • Aktives Mitglied
  • ***
  • Beiträge: 220
  • Geschlecht: Männlich
  • Homer for ever !
Re: Wert in ein Feld einer anderen DB schreiben
« Antwort #2 am: 22.08.02 - 07:00:26 »
Hi,
also das mit dem Wert um 1 erhöhen ist nicht so das Problem. Nur wie sage ich dem Teil, daß er diesen Wert in ein bestimmtes Feld einer anderen DB schreiben soll. Hast Du nen Tip (Formelsprach oder LS)??
Danke und Gruß
FBaum
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »

Offline Zimmi

  • Aktives Mitglied
  • ***
  • Beiträge: 166
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
Re: Wert in ein Feld einer anderen DB schreiben
« Antwort #3 am: 22.08.02 - 08:39:22 »
Hallo,

sollte eigentlich keine Problem sein, wenn du in der DB2 das richtige Dokument finden kannst. Dazu müsste das aktuelle Dokument über irgendwelche Feld-Werte verfügen, die du als Suchkriterien nutzen kannst.

So in der Art: (ich gebe mal so den Anfang vor ..)
dim ws as new notesuiworkspace
dim uidoc as notesuidocument
dim s as new notessession
dim db2 as notesdatabase
dim view as notesview      ' sollte eine sortiert Ansicht sein
dim doc as notesdocument
dim wert1 as string ' den wert, den du übergeben willst
dim wert2 as string ' oder was auch immer du benötigst zur Suche

set uidoc = ws.currentdocument
wert = uidoc.fieldgettext("feldname")

set db2 = session.getdatabase("Server", "Datei")
set view = db2.getview("viewname")
set doc = view.getdocumentbykey(wert2)

if not doc is nothing then
 call doc.replaceitemvalue("feldname", wert1)
 call doc.save(true, false)
end if

Ich hoffe, das hilft dir erstmal weiter ...

Zimmi
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »

Offline Rob Green

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.651
  • Geschlecht: Männlich
    • Meipor
Re: Wert in ein Feld einer anderen DB schreiben
« Antwort #4 am: 22.08.02 - 08:56:59 »
entweder generierst Du eine Mail beim Erstellen/Bearbeiten/Ändern/Löschen eines Dokumentes aus DB1, die u.a. auch das Zuordnungsfeld enthält, welches das korrespondierende Dokument in der DB2 identifiziert und welches anpackt werden soll (Zähler um +1). In DB2 läuft dazu ein simpler Mail-In Agent mit entweder einem dblookup oder setdocfield (bei einem benötigst Du auf jeden Fall die DocumentuniqueID des Zieldokuments).

ODER
du schreibst ein Script zB beim Event querysave (wenn Du kein Script kannst, werde ich bewußt kein gesamtes Beispiel reinschreiben):

aus der Notes Help
Examples: FieldSetText method  

 1.      This script sets the value of the Creator field to the user's name after a document is opened in Edit mode. For example, if Brian Flokka creates a new document, the string "Brian Flokka" is placed in the Creator field.
Sub Postopen(Source As Notesuidocument)
 Dim session As New NotesSession
 If source.EditMode Then
   Call source.FieldSetText _
   ( "Creator", session.CommonUserName )
 End If
End Sub
 2.      This script gets the value of four number fields: Q1, Q2, Q3, and Q4, and converts them to integers using Cint(). It adds the four values together and sets the value of the Total field, using Cstr() to convert the result to a string.
Sub Querysave(Source As Notesuidocument, Continue As Variant)
 a% = Cint( source.FieldGetText( "Q1" ) )
 b% = Cint( source.FieldGetText( "Q2" ) )
 c% = Cint( source.FieldGetText( "Q3" ) )
 d% = Cint( source.FieldGetText( "Q4" ) )
 Call source.FieldSetText _
 ( "Total", Cstr( a% + b% + c% + d% ) )
End Sub

Wie spricht man im Script die aktuelle DB und ein aktuelles Doc im Fenster an?

Dim workspace As New NotesUIWorkspace
 Dim uidoc As NotesUIDocument
 Dim composed As String
 Set uidoc = workspace.CurrentDocument
 composed = uidoc.FieldGetText( "DateComposed" )

Wie spricht man eine andere DB an?
Dim db As NotesDatabase
Set db = New NotesDatabase( "Barcelona", "plan.nsf" )
Messagebox( db.Title )

Wie findet man ein Doc?
This field script gets a user's full name from a field on the current document, parses the full name to find the last name, and then uses GetDocumentByKey to find the user's office phone number in the People view of the Address Book on the current machine. It places the phone number into the Phone field on the current document.
Sub Exiting(Source As Field)
 Dim workspace As New NotesUIWorkspace
 Dim uidoc As NotesUIDocument    
 Dim fullName As String
 Dim lastName As String
 Dim db As NotesDatabase
 Dim view As NotesView
 Dim doc As NotesDocument
 ' first parse the full name to find the last name
 Set uidoc = workspace.CurrentDocument    
 fullName = uidoc.FieldGetText( "Name" )
 lastName = Mid$( fullName, (Instr( fullName, " ") + 1 ))
 ' now use the last name as the key
 Set db = New NotesDatabase( "", "names.nsf" )
 Set view = db.GetView( "People" )
 Set doc = view.GetDocumentByKey( lastName )
 Call uidoc.FieldSetText _
 ( "Phone", doc.OfficePhoneNumber( 0 ) )
End Sub
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
Vielleicht verdirbt Geld wirklich den Charakter.
Auf keinen Fall aber macht Mangel an Geld ihn besser.
(John Steinbeck)

Meiporblog: http://www.meipor.de/blog
allg. Unternehmerblog: http://www.m-e-x.de/blog

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz