Autor Thema: erneut @dblookup  (Gelesen 3240 mal)

Offline wuwu

  • Senior Mitglied
  • ****
  • Beiträge: 357
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
erneut @dblookup
« am: 30.10.04 - 12:00:54 »
Hallo,

wieder eine DBLOOKUP Fehlermeldung:
Eintrag im Index nicht gefunden oder der Index für die Ansicht ist nicht aufgebaut.

Maske Test:
Felder:
Nummer - Zahl
Ort2 - Text
Schaltfläche Setzen:
Auswahl:=@PickList( [Custom] ; "Samples\\Test2.nsf" ; "Test" ; "Nummer wählen" ; "Nummer" ; 1);
@SetField("Nummer";Auswahl);
@SetField("Ort2";@If(Nummer="";"";@DbLookup("":"NoCache" ;"":"Samples\\Test2.nsf" ; "Test";Ort;2)))

Test2.nsf, Ansicht Test:
Spalte 1 Nummer - sortiert
Spalte 2 Ort - nicht sortiert

Es sollte das Feld Ort2 automatisch mit dem Wert aus Test2.nsf\Test\Spalte2 = Ort gefüllt werden.

ich hoffe es kann mitr wer helfen, ich bin am verzweifeln.

mfg horst
Domino 7.01 - AS 400, Domino 7.01 - Win2003, Lotus Notes 8.01 Basic->PCs, NB, Terminal Server Farm.

Offline Thomas Schulte

  • @Notes Preisträger
  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: erneut @dblookup
« Antwort #1 am: 30.10.04 - 12:24:25 »
Und wo kriegst du den Wert für Ort her? Er sagt dir doch das er den Wert den du suchst in der Datenbank nicht findet. Also...

@prompt([OK];"Debug Variable 1";Ort) vor deinen Lookup eintragen nud du weist schon einmal wesentlich mehr. Anschließend kannst dir deine Ansicht "Test" noch anschauen ob die erste Spalte auch wirklich sortiert ist.

Thomas
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: erneut @dblookup
« Antwort #2 am: 30.10.04 - 12:36:56 »
Beziehungsweise - so wie die Struktur aussieht - dort sollte im dblookup  die Variable Auswahl anstelle des Feldes Ort für den Key angegeben werden.
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Marinero Atlántico

  • Gast
Re: erneut @dblookup
« Antwort #3 am: 30.10.04 - 13:41:31 »
wenn du das so verschachtelst, ist das risiko ziemlich gross, dass du, nach einer gewissen Zeit oder eventuell direkt beim entwickeln, ich meine, irgendwie, nicht mehr durchblickst.

Kann man das nicht irgendwie so in der Art machen?
Code
tempSpalte2NachOrt := @DbLookup("":"NoCache" ;"":"Samples\\Test2.nsf" ; "Test";Ort;2);
spalte2NachOrt := @if(@isError(tempSpalte2NachOrt); "FEHLER"; tempSpalte2NachOrt);

... und vielleicht ein paar
Code
rem "some usefull hints";

Offline wuwu

  • Senior Mitglied
  • ****
  • Beiträge: 357
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: erneut @dblookup
« Antwort #4 am: 30.10.04 - 17:51:04 »
hallo,

danke für eure hilfe, ich komme aber mit euren vorschlägen noch nicht ganz klar.
Vielleicht erklär ich es mal so:
Ich habe eine DB mit einer Maske in der vorerst 3 Felder sind:
Maske Test beinhaltet
Feld1:Nummer - Zahl
Feld 2:Ort - Text
Feld 3: Strasse - Text

Es gibt eine weitere DB - Test2.nsf, in der mehrere Daten vorhanden sind in einer Ansicht - Test.
Ansicht Test:
1 Spalte: Nummer
2 Spalte: Ort
3 Spalte: Strasse
4 Spalte: PLZ usw.

Ziel ist:
Ich möchte gerne eine Eingabe bzw. Auswahlfeld in der Maske Test machen, wo ich die Nummer aus der Test2.nsf\Ansicht: Test auswähle und dann abhängig von der Nummer sollte er mir die 2 anderen Felder in der Maske automatisch füllen ,auch wieder aus der test2.nsf\ansicht: test.

Was wäre da die beste und schnellste Lösung?

danke für eure hilfe im vorhinein,

horst

Domino 7.01 - AS 400, Domino 7.01 - Win2003, Lotus Notes 8.01 Basic->PCs, NB, Terminal Server Farm.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: erneut @dblookup
« Antwort #5 am: 30.10.04 - 18:02:23 »
Was macht eigentlich der doppelte Backslash bei der Pfadangabe ?
Der Key ist nicht Ort, sondern Nummer (aber das wurde schon erwähnt).
Ist die erste Spalte der Ansicht "Test" sortiert ?

Ich würde zudem derartige dbLookups nie in Felder selbst schreiben, sondern immer nur über Buttons verwenden, da sonst bei jedem Zugriff auf das Dokument der dbLookup ausgeführt wird, was bei grösseren DBs den Kaffeebedarf des Unternehmens drastisch in die Höhe treibt.

Ab und an gibt es Ärger bei Lookups (@functions oder LS), wenn der Schlüssel eine Zahl ist.  Picklist gibt Dir eine Textliste zurück - damit darf Deine Ansicht keine Zahlen in der 1. Spalte erhalten.
Wenn Nummer eine zahl sein muss, stelle sie in der Ansicht als Text dar. Sonst wird das nix ...

HTH,
Bernhard

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: erneut @dblookup
« Antwort #6 am: 30.10.04 - 18:12:22 »
Ich habe eine DB mit einer Maske in der vorerst 3 Felder sind:
Maske Test beinhaltet
Feld1:Nummer - Zahl
Feld 2:Ort - Text
Feld 3: Strasse - Text

Es gibt eine weitere DB - Test2.nsf, in der mehrere Daten vorhanden sind in einer Ansicht - Test.
Ansicht Test:
1 Spalte: Nummer
2 Spalte: Ort
3 Spalte: Strasse
4 Spalte: PLZ usw.

Ziel ist:
Ich möchte gerne eine Eingabe bzw. Auswahlfeld in der Maske Test machen, wo ich die Nummer aus der Test2.nsf\Ansicht: Test auswähle und dann abhängig von der Nummer sollte er mir die 2 anderen Felder in der Maske automatisch füllen ,auch wieder aus der test2.nsf\ansicht: test.

Auf die Schnelle:

A) für Dein Feld "Ort" (berechnet!):

_DB := "12345678:12345678"
_Nummer := @Text(Nummer);
_View := "Ansicht";
_Spalte := 2;

@If (_Nummer != "";
      @DbLookup ("":"NoCache"; _DB; _View; _Nummer; _Spalte );
     ""
)


B) Für Dein Feld Nummer (Dialglisten-Formel):

_DB := "12345678:12345678";
_View := "Ansicht";
_Lookup := @DbColumn( "" : "NoCache" ; _DB; _View; 1 )
@If(@IsError(_Lookup); ""; @Unique(_Lookup))

Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline wuwu

  • Senior Mitglied
  • ****
  • Beiträge: 357
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: erneut @dblookup
« Antwort #7 am: 01.11.04 - 14:14:54 »
Hallo Jungs,

ich drehe durch, habe jetzt den ganzen vormittag probiert, habs nicht geschafft, ich weis aber nicht mehr warum.
ich habe die 2 dbs im anhang hinzugefügt, kann bitte jemand mal drüber schaun, merci.

mfg horst

p.s.: bei mir liegen die dbs unter notes\data\samples\
Domino 7.01 - AS 400, Domino 7.01 - Win2003, Lotus Notes 8.01 Basic->PCs, NB, Terminal Server Farm.

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: erneut @dblookup
« Antwort #8 am: 01.11.04 - 14:48:03 »
Da waren noch ein paar Fehler drin.

Feld Nummer (Dialglisten-Formel):
Code
_Server := "";
_DB := "samples/Test2.nsf";
_View := "vTest";
_Lookup := @Text(@DbColumn( "" : "NoCache" ; _Server : _DB; _View; 1));
@If(@IsError(_Lookup); ""; @Unique(_Lookup))

Formel für Feld Ort:
Code
_Server := "";
_DB := "samples/Test2.nsf";
_View := "vTest";
_Key := Nummer;
_ColumnNumber := 2;
@If (_Key != "";
      @DbLookup ("":"NoCache"; _Server : _DB; _View; @TextToNumber(_Key); _ColumnNumber );
     ""
)

So geht's erstmal. Allerdings besser wäre: In der Ansicht die "Nummer" als Text und nicht als Zahl darzustellen. Dann kannst Du Dir auch die Umwandlungen @TextToNumber bzw. @Text sparen.
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline wuwu

  • Senior Mitglied
  • ****
  • Beiträge: 357
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: erneut @dblookup
« Antwort #9 am: 01.11.04 - 14:59:25 »
servus matthias,

du hast mir soeben den tag gerettet!
ein frage habe ich trotzdem noch:

wenn ich einfach eine nummer eingebe, wie kann ich dann den eintrag automatisch setzen? es gibt ja in einem textfeld keine möglichkeit, aktualisierung bei schlüsselwortänderung?

vorerst danke nochmal, schönen tag noch! :D :D :D
Domino 7.01 - AS 400, Domino 7.01 - Win2003, Lotus Notes 8.01 Basic->PCs, NB, Terminal Server Farm.

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: erneut @dblookup
« Antwort #10 am: 01.11.04 - 15:07:43 »
wenn ich einfach eine nummer eingebe, wie kann ich dann den eintrag automatisch setzen?

Kommt darauf an. Z.B. manuell über "F9" Taste refreshen, oder z.B. im Exiting-Event ein NotesUIDocument.Refresh
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline wuwu

  • Senior Mitglied
  • ****
  • Beiträge: 357
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: erneut @dblookup
« Antwort #11 am: 02.11.04 - 11:53:37 »
Hallo Matthias,

nochmal eine Frage zum gleichem Thema:
Ich habe in einer Ansicht eine Spalte Auftragsnr, & Posnr.

In einer Maske fülle ich nun das Dialogfeld Auftragsnummer mit dem Wert aus der Ansicht Auftragsnr über @dbcolumn usw.

Es kann aber zu einer Auftragsnummer mehrere Positionen geben. Ich habe nun ein 2 Dialogfeld Position. Ist es möglich das beim Dialogfeld Position nur die Positionen angezeigt werden können abhängig von dem Dialogfeld Auftragsnummer?

danke vorerst,

mfg horst
Domino 7.01 - AS 400, Domino 7.01 - Win2003, Lotus Notes 8.01 Basic->PCs, NB, Terminal Server Farm.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz