Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: wuwu am 30.10.04 - 12:00:54

Titel: erneut @dblookup
Beitrag von: wuwu 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
Titel: Re: erneut @dblookup
Beitrag von: Thomas Schulte 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
Titel: Re: erneut @dblookup
Beitrag von: Semeaphoros 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.
Titel: Re: erneut @dblookup
Beitrag von: Marinero Atlántico 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";
Titel: Re: erneut @dblookup
Beitrag von: wuwu 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

Titel: Re: erneut @dblookup
Beitrag von: koehlerbv 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
Titel: Re: erneut @dblookup
Beitrag von: TMC 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))
Titel: Re: erneut @dblookup
Beitrag von: wuwu 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\
Titel: Re: erneut @dblookup
Beitrag von: TMC 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.
Titel: Re: erneut @dblookup
Beitrag von: wuwu 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
Titel: Re: erneut @dblookup
Beitrag von: TMC 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
Titel: Re: erneut @dblookup
Beitrag von: wuwu 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