Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: Remy9999 am 20.09.10 - 11:44:25

Titel: Felder in diversen Datensätzen automatisch ändern
Beitrag von: Remy9999 am 20.09.10 - 11:44:25
Hallo,

ich schon wieder..

Ich versuche mich an einer Datenbank, bei der ich in einer Maske (Kundeneinheiten) die Kundennummern von diversen Kunden habe. Für jede Kundennummer gibt es in der Maske ein eigenes Feld, wobei nicht zwingend jedes Feld gefüllt ist, da nicht jeder Kunde alle Vorgaben erfüllt. Weiterhin haben alle diese Kunden (so denn vorhanden) jeweils einen eigenen Datensatz, der auch genau durch diese Kundennummer definiert ist.

Jetzt möchte ich durch eine Aktion in alle diese genau definierten Datensätze in ein Feld einen Wert schreiben, der in der Maske Kundeneinheiten als Sammelbegriff für diese Einheit definiert ist.

Habe das ganze über eine Aktion versucht ->
  _temp = KD_Eng_neu; 
  @Command([OpenView];"Haupt";KD_alt1);
  @Command([EditDocument]);
  FIELD KD_Eng_neu := _temp;
  @Command([FileSave]);
  @Command([CloseWindow])...
klappt aber nur bis zum ersten Dokument, d.h. das wird geöffnet, der Dateninhalt geschrieben, aber die Speicherung funtkioniert schon nicht mehr.

Da ich Script so gut wie gar nicht beherrsche - stehe ich ein wenig auf dem Schlauch.  ???

Kann mir jemand einen Tipp geben??

Martin
Titel: Re: Felder in diversen Datensätzen automatisch ändern
Beitrag von: Mitch am 20.09.10 - 12:00:42
Bau dir einen Agenten. Das geht dann sogar über die "Einfachen Aktionen". Neuen Agenten erstellen, Namen vergeben, Aktion hinzufügen...

Ist sogar per Default alles so eingestellt wie du es brauchst.

Dann einfach die Dokumente in einer Ansicht markieren und den Agenten über das "Aktionen"-Menü starten.

Agenten danach wieder entfernen.


Äääh, so einfach natürlich nur wenn du einen festen Wert reinschreiben willst. Aber das willst du ja gar nicht, hatte ich überlesen.

Aber im Prinzip das gleiche: Einfache Aktion "@Formel ausführen" und das eingeben:

FIELD NeuesFeld := AltesFeld;
@True
Titel: Re: Felder in diversen Datensätzen automatisch ändern
Beitrag von: Remy9999 am 20.09.10 - 13:16:06
Hallo,

gedacht hatte ich mir das auch so - das Problem ist aber, dass ich ja das Feld bei den verschiedenen Kunden, also in bis zu 6 Datensätzen ändern muss - und mein Problem ist, dass ich diese Datensätze ja über die Aktion nicht genau definieren kann.

Darum der Versuch, den Datensatz mit OpenView zu selektieren und dann das Feld zu ändern.

Martin
Titel: Re: Felder in diversen Datensätzen automatisch ändern
Beitrag von: Grischu am 20.09.10 - 14:30:10
Wie wäre es damit ?


Code
_temp := KD_Eng_neu; 
unids:= @DbLookup("":"NoCache";"":"";"Haupt";KD_alt1;[RETURNDOCUMENTUNIQUEID]);
@For(i := 1; i < @Elements(unids); i := i + 1;@SetDocField(unids[i];KD_Eng_neu;_temp))

Hab ich nur so schnell zusammengeschrieben also bitte noch testen bevors auf die scharfe Datenbank geht :)
Titel: Re: Felder in diversen Datensätzen automatisch ändern
Beitrag von: Remy9999 am 21.09.10 - 09:28:16
mmhh, danke für den Tip mit dblookup - aber funzt irgendwie nicht.

Wahrscheinlich habe ich mich auch unklar ausgedrückt:
- wie gesagt habe ich für jede KundenNr. ein eigenes Feld, mit unterschiedlichen Namen. Ich möchte aus der Maske heraus, z.B. den/die Kundensatz(e) KD_Eng_neu2 und KD_Eng_neu3 befüllen. Die dort enthaltenen Kundennummern haben jeweils noch einen eigenen Datensatz - und den finde ich nicht, bzw. kann den nicht editieren.

Unten mal meine Maske.

Und der Agent sieht so aus:

_temp := KD_Eng_neu;
KDNummer := KD_Eng_neu1;
@SetDocField(@DbLookup("":"NoCache";"":"";"Haupt";KDNummer;[ReturnDocumentUniqueID]);"KD_Eng_neu";_temp);
KDNummer  := KD_Eng_neu2;
@SetDocField(@DbLookup("":"NoCache";"":"";"Haupt";KDNummer;[ReturnDocumentUniqueID]);"KD_Eng_neu";_temp);
KDNummer := KD_Eng_neu3;
@SetDocField(@DbLookup("":"NoCache";"":"";"Haupt";KDNummer;[ReturnDocumentUniqueID]);"KD_Eng_neu";_temp);
SELECT @All

Die Ansicht "Haupt" ist sortiert nach der KDNummer.

Wo habe ich meinen Denkfehler???

Titel: Re: Felder in diversen Datensätzen automatisch ändern
Beitrag von: Grischu am 21.09.10 - 10:58:28
Dieser eigene Datensatz ist in der Ansicht Haupt ?
in dieser ansicht gibt es nur genau einen  Datensatz mit der Nummer ?

 


Titel: Re: Felder in diversen Datensätzen automatisch ändern
Beitrag von: Remy9999 am 21.09.10 - 11:18:43

JA - jeder Datensatz ist eindeutig über das Feld KDNummer identifiziert und existiert auch nur einmal.

Titel: Re: Felder in diversen Datensätzen automatisch ändern
Beitrag von: Peter Klett am 21.09.10 - 11:35:35
Ich würde mit @Prompt KDNummer und _temp ausgeben lassen, vielleicht erkennt der Agent die Feldinhalte nicht.

Warum startest Du einen Agenten über die Schaltfläche? Du kannst doch die Formel direkt in die Aktion schreiben
Titel: Re: Felder in diversen Datensätzen automatisch ändern
Beitrag von: Remy9999 am 21.09.10 - 12:11:40

- die Feldinhalte werden korrekt übergeben KDNummer wird vor jedem DBLookup angepasst, _temp ist immer gleich.

- die Aktion hatte ich auch schon angepasst und die Formel direkt dort hinein geschrieben.

Titel: Re: Felder in diversen Datensätzen automatisch ändern
Beitrag von: Grischu am 21.09.10 - 14:53:14
beim DBLookup fehlt ein Parameter, fehlte auch schon oben bei meinem Post.    Sorry!

_temp := KD_Eng_neu;
KDNummer := KD_Eng_neu1;
@SetDocField(@DbLookup("":"NoCache";"":"";"Haupt";KDNummer;1;[ReturnDocumentUniqueID]);"KD_Eng_neu";_temp);
KDNummer  := KD_Eng_neu2;
@SetDocField(@DbLookup("":"NoCache";"":"";"Haupt";KDNummer;1;[ReturnDocumentUniqueID]);"KD_Eng_neu";_temp);
KDNummer := KD_Eng_neu3;
@SetDocField(@DbLookup("":"NoCache";"":"";"Haupt";KDNummer;1;[ReturnDocumentUniqueID]);"KD_Eng_neu";_temp);
SELECT @All
Titel: Re: Felder in diversen Datensätzen automatisch ändern
Beitrag von: Remy9999 am 24.09.10 - 08:50:38
..danke für die Hilfe, aber klappt immer noch nicht.

Kann es leider nicht mehr weiter testen - muss "leider" in Urlaub gehen.

Vielleicht kommt ja dort der Geistesblitz.

Martin