Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: CrazyCoder am 24.02.03 - 13:38:29
-
Hi Leute!
Ich dachte bis vor ca 1 Stunde das meine Datenbank fertig wäre, aber nun ist mir ein fetter Fehler aufgefallen!!! :'(
Ich greife in 8 Feldern über einen DBLookUp in eine andere Datenbank, das Funzt, ich lasse mir die Inahlte der Ansicht in verschiedenen Feldern anzeigen! Das Funzt auch!
Jetzt mein Prob:
Ich habe das auslesen der Daten an dem Mandantennamen festgemacht, habe dabei nicht bedacht, das dieser nicht einmalig ist!!!!!!! Ich muß jedoch weiterhin über dieses System an die Infos kommen, da sonst die User nachher nicht damit umgehen können! (Ist zu komplex um das jetzt kurz zu erklären!)
Also, hat irgendeiner von euch ne Idee wie ich das Lösen könnte?
Ich muß weiterhin auf eine andere Datenbank zugreifen und dies muß weiterhin über den Mandantenname geschehen! Gibt es vielleicht eine Möglichkeit, wie ich weitere Infos mitübergeben kann um dieses Feld eindeutig zu machen??? ??? ???
HILFE!!!!!!! HILFE!!!!!!! HILFE!!!!!!! HILFE!!!!!!! HILFE!!!!!!! HILFE!!!!!!! HILFE!!!!!!!
cya
CrazyCoder :-[
-
die Lookupview:
setze Mandantennamen und ein anderes Flag (zB Kundennummer) in der ersten Spalte zusammen, worauf Lookup per Searchkey zugreift. Auf jeden Fall muss es eindeutig sein !
Spaltenformel: Mandantenname+@text(Kundennummer)
Searchkey: der Searchkey muß dann ebenso zusammengesetzt sein aus Mandantenname+@text(Kundennummer) =>
dblookup(...."View"; Mandantenname+@text(Kundennummer); Spalte xyz)
Intern hast Du eine Kundennummer, die Du bei Erstellung des Mandantennamen eindeutig per @unique vergibst. Das bekommen die User nie mit. Das regelst Du.
Wie Du allerdings es bewerkstelligen willst, daß der User den richtigen Mandanten unter
"Hans Meier" "Hans Meier" "Hans Meier" "Hans Meier" "Hans Meier" "Hans Meier" rauspickt, weiß ich nicht, ...
-
Das ist kein Prob, da es sich dabei um Firmen handelt, die nur verschiedene Sitze haben, wie z.B.:
Siemens , München
Siemens , Berlin
...
...
könnte ich das nicht vielleicht auch daran festmachen?
Wie soll das jetzt mit der Nummer gehen, ich hab noch nicht mit @unique gearbeitet!
Muß ich ein neues Feld definieren, diesem als Vorgabewert @unique zuweisen und das dann mit dem Namen zusammen in der "Suchansicht für DBLookUp" anzeigen lassen?? Dann sieht der User das doch, oder?
Sorry, bin mir noch nicht sicher wie du das jetzt meinst, bin noch Azubi! ;)
Danke für deine Hilfe!
cya
CrazyCoder :-\
-
laaangsam..
eins nach dem anderen... ;D
Du suchst einen eindeutigen Schlüssel?
Mein Vorschlag mit "unique" sollte Dir nur einen Weg zeigen, weil Du mehr Futter nicht geliefert hast, was ein Doc eindeutig macht.
Nun Deine Antwort darauf: "Mandant und SitZ"
na gut...wenn das reicht, dann
Suchansicht, 1. Spalte:
Mandant + Sitz
Suchkey:
Mandant + Sitz
Dann: "Dann sieht der User das doch, oder?"
er sieht, daß er Mandant Siemens, München ausgesucht hat.
Feld Mandant: Siemens
Sitz: München
na und?
Er sieht ja net, was Du im Dbllokup zusammenstellst, um in der Suchview die dazugehörigen Irgendwas zu finden. Und wenn Du eine View verwendest, die nicht sortiert nach SiemensMünchen, SiemensBerlin lauten soll, nimmste eben eine versteckte Ansicht für den Lookup und läßt den Usern die bisherige Ansicht - die ehemalige Suchansicht - so stehen mit Siemens, IBM..
ohne, daß Du groß andere Dinge im Design anpassen müßtest. Oder haste das Teil rausgefeuert und kommst net mehr an das Design ran?
-
Hm... also, das Desing hab ich noch! Das ist kein Prob! :)
Mir ist gerade aufgefallen das auch die Kombination Mandant + Sitz in der Datenbank nicht eindeutig wäre, da die entweder an der PLZ oder am Ansprechpartner unterschieden werden!
Gut wie war das dann mit "@unique"? Ich denke es ist sicherer eine EINDEUTIGE "ID" zu erzeugen als alle möglichen Felder aus der Maske zusammen zu fassen!
Oder???
Und was ist dann mit dieser "ID" von "@unique"? Sehen die User die?
Und was ist mit dem Dialogfeld aus dem ich auf die Ansicht zugreife, bekommt der nicht diese Info zugewiesen, mit der "ID von @unique" ???
Ich weiß ich bin schlimm! :( Sorry aber ich bin noch nicht so fit in LN!
Danke!!!
CrazyCoder
-
... @Unique eliminiert doppelte Werte aus einer Liste und vergibt keine IDs die eindeutig sind...
ata
-
Hm... das heißt jetzt???
Wie kann ich denn mein Problem beheben????? ???
Ich muß morgen eine Funktionierende DB Präsentieren!!! :-[
HILFE!!
CrazyCoder
-
... Rob hat dir weiter oben im Posting beschrieben, wie du dir einen Schlüssel bauen kannst...
ata
-
Na toll! Das hilft mir aber alleine nicht weiter!!!!!
Was ist mit meinen Fragen??
Ober der User nicht dann den Schlüssel sieht?
und
Ob dann nicht der Schlüssel mit ins Feld übernommen wird!!!
Ich raff das nun mal nicht, tut mir leid!
CrazyCoder
-
hallo Coder
du hast doch Antworten bekommen.... hast du schon was in die Richtung unternommen ?
- rumschreien hilft eh nichts ... und das die db morgen fertig sein soll interessiert hier glaube ich auch niemanden
cu
-
.. nun mal ganz ruhig ;D
du musst dir ZUERST einen schlüssel ausdenken, wie du die docs eindeutig (!) identifizieren kannst.
dann eine ansicht bauen (evtl. versteckt), wo in der ersten spalte dieser schlüssel steht (spalte sortiert). wie der schlüssel aufgebaut wird, steht weiter oben.
dann kannst du gezielt auf dieses doc zugreifen und dem user die daten anzeigen ( oder sonst was..) ;)
-
hm...da muß ich klaussal Recht geben: bitte überlege Dir in Ruhe einen Schlüssel, der eindeutig genug ist. Zuerst war es
- Mandant
- dann Mandant und Standort
- dann ist Dir eingefallen, daß es Mandant, Standort & PLZ / Ansprechpartner ... sein sol...
ähem... ;D
Also: eindeutig wäre Mandant und unique....
unique steht in der Help ausführlich beschrieben, was es macht
"Wenn kein Parameter angegeben, wird ein nach dem Zufallsverfahren eindeutige Textwert zurückgegeben. Wenn ein Parameter angegeben wird, so werden doppelt vorhandene Werte aus einer Textliste gelöscht, indem nur das erste Element in der Liste zurückgegeben wird.
Syntax
@Unique
@Unique( Textliste )"
Der einzige Trick ist nicht beim Anlegen des Mandanten, wobei Du in einem zweiten Feld Mandant und den per unique erzeugten Schlüssel als "Rerefenz Key" zusammenlegst.
Dann wird später bei Auswahl eines Mandanten (sichtbar für User) zusätzlich (unsichtbar) das zweite Feld mitgezogen...
"SiemensAB98768GZZ999u898" = eindeutige Key für weitere Abfragen.
Also Gemach und DENKEN !!!! 8)
-
@Rob
... die zweite Variante des @Unique war mir noch gar nicht geläufig - eieiei :o
ata ;D
-
.. man lernt nie aus ::)
-
gern geschehen ;)
Letzten Endes kann man mE entweder die unique Function nutzen oder aber die UNID des Docs (Mandantendocs).
Wie er es dann nmacht, ob links herum oder rechts, ist gehoppt wie gedoppt.
Ich denke, was eher sein Problem ist, daß er sich etwas verrannt hat wegen dem zeitlichen Stress und nun schnell schnell das Ganze lösen muß. Da er nicht 100% fit ist, kommt er natürlich in Probleme.
ABER, wir sind ja da und können ihm aus der Patsche helfen.
Also, CrazyCoder, nur Mut...wird schon :)
-
... der hat sich augeklinkt (anfall von stress ?)..... ::)
-
O.k. danke leute!
Also, die Unique Methode finde ich zusammen mit dem namen am besten, denn so wie ich dsa jetzt verstanden habe, ist der Rückgabewert 100%ig EINDEUTIG! :)
Also gut. Wie kriege ich das denn hin, das von z.B.: "SiemensAG98768GZZ999u898" die Zahlenfolge ausgeblendet werden kann!
Wo fange ich jetzt am besten an?
Die Datenbank ausder die Daten der Mandanten gezogen werden besteht schon, wie kriege ich denn dann da jetzt zu jedem Mandantennamen den "Unique-Rückgabewert", ohne denn derzeitigen Inhalt zu löschen?!
-
Im Mandantendoc:
das zweite Feld heißt
"ID", Typ Text, Berechnet beim Anlegen, HIDDEN
Formel: @unique
das dritte Feld lautet
"MandantID", Typ Text, berechnet, HIDDEN
Formel: Feld_Mandant + "0@@0" + ID
(wert zB "Siemens0@@0ANC432536...")
Wie bekommt man nun diese Felder nachträglich rein?
Einen Agent, manuell auf markierte Dos in Ansicht:
Formel:
Field ID:=@unique
Field MandantID:=Feld_Mandant+"0@@0"+ID
Die Suchview in der Db muß in der ersten Spalte das Feld
"MandantID" sortiert (!!!!) anzeigen
Dann im nächsten Doctypen (was auch immer damit gemacht wird)...
ein Auswahlfeld mit Dialogfenster, das den Namen des Mandanten rausholt..aufgerufen per BUTTON neben dem Feld, was in sich selbst berechnet ist (Field_Mandant, Formel: Field_Mandant).
Nehme dazu die Picklist Funktion...anhand dieser Funktion wird ein Fenster mit der gewünschten Ansicht angezeigt, in der der User ein Doc auswählen kann. Diese Ansicht ist nicht die Suchansicht (sonst würden die User in der ersten Spalte das doofe "SiemensABC12348" sehen). Im Picklist kann man dann die rückzugebende Spalte angeben....hierzu nimmt man die Spalte mit demMandantenID Kennzeichen, nehmen wir dafür die Spalte 2, in der diese Info angezeigt wird.
Den Rückgabewert nimmt man auseinander:
Rückgabewert ist "Siemens0@@0ABC1234576"
Um den Mandanten namentlich ins Mandantenfeld zu holen, nimmt man
Field Mandant:=@left(Rückgabewert;"0@@0") ---> = "Siemens"
In ein weiteres Feld wird immer noch in der gleichen Formel/Button angesprochen:
Field_ID:=Rückgabewert. Das Feld ist berechnet in sich selbst mit der Formel "Field_ID" und versteckelt. Anhand dieses Feldes kannst Du Dein DbLookUp füttern.
So einigermaßen klar?
-
Hoi Rob!
Also bis hier hin ist das alles Kein Prob! Ab da fängt es dann wieder an! :(
Den Rückgabewert nimmt man auseinander:
Rückgabewert ist "Siemens0@@0ABC1234576"
Um den Mandanten namentlich ins Mandantenfeld zu holen, nimmt man
Field Mandant:=@left(Rückgabewert;"0@@0") ---> = "Siemens"
In ein weiteres Feld wird immer noch in der gleichen Formel/Button angesprochen:
Field_ID:=Rückgabewert. Das Feld ist berechnet in sich selbst mit der Formel "Field_ID" und versteckelt. Anhand dieses Feldes kannst Du Dein DbLookUp füttern.
Wie meinste das?
Also mein Button sieht jetzt wie folg aus:
Auswahl := @PickList( [Custom] ; "Servername" : "datenbankname.nsf" ; "(vorlage-db-lookup)" ; "Wählen Sie einen Mandanten" ; "Bitte wählen Sie einen Mandanten aus:" ; 1);
FIELD Mandant := @Left(Auswahl; "0@@0");
Aber da kriege ich ständig die Meldung das ich noch keinen Hauptausdruck in der Formel hätte! Ich raff das noch nicht so ganz!
Kannste mir das vielleicht nochmal erklären?? ;D
Schonmal danke!
cya
CrazyCoder
-
Aber da kriege ich ständig die Meldung das ich noch keinen Hauptausdruck in der Formel hätte!
bei diser Meldung einfach ein "" ans Ende der Formel reinmachen
cu
-
Also ich habs jetzt soweit hinbekommen, das das mit dem Rückgabewert eingetragen wird! ;D
Mein Button:
Auswahl := @PickList( [Custom] ; "Servername" : "Datenbankname.nsf" ; "(vorlage-db-lookup)" ; "Wählen Sie einen Mandanten" ; "Bitte wählen Sie einen Mandanten aus:" ; 1);
var1 := @Left(Auswahl; "0@@0");
@SetField ("Mandant"; var1)
Aber wie meinst du das mit der Feld_ID und ich könnte damit meinen DBLookUP "füttern"? ???
Hm... wenn ich über die @PickList arbeite, dann kann man ja in der "Ansicht" diesen "@Unique-Teil" nicht ausblenden so das der User das auch schon nicht in der Auswahlliste sieht oder??
Kannste mir auch nochmal kurz erklären welche forraussetzungen der DBLookUP hat?! Irgendwie funzt der bei mir nicht so richtig.
o.k. danke!!
cya
CrazyCoder
-
zunächst Picklist...
Du nimmst die erste Spalte als Rückgabewert..besser wäre es, Du nimmst eine Spalte "ganz hinten", aus den Augen des Users quasi..die diesen String enthält. Kannst ja in der ersten Spalte Siemens stehen haben für den User, als Rückgabewert aber Spalte 8, wo SiemensABC.. steht. So stört und irritiert das die User nicht.
Auswahl := @PickList( [Custom] ; "Servername" : "Datenbankname.nsf" ; "(vorlage-db-lookup)" ; "Wählen Sie einen Mandanten" ; "Bitte wählen Sie einen Mandanten aus:" ; 8);
var1 := @Left(Auswahl; "0@@0");
@SetField ("Mandant"; var1)
Der DBLookup und das ID Dingsbums?
Auswahl := @PickList( [Custom] ; "Servername" : "Datenbankname.nsf" ; "(vorlage-db-lookup)" ; "Wählen Sie einen Mandanten" ; "Bitte wählen Sie einen Mandanten aus:" ; 8);
var1 := @Left(Auswahl; "0@@0");
@SetField ("Mandant"; var1);
@SetField ("Mandanten_ID"; Auswahl);
_void
(_void? Jede Formel braucht nen Rückgabewert, sprich ein Ergebnis...mit void stelle ich das sicher, daß die Formel denkt, sie hätte was als Ergebnis...mit dem sie allerdings nix machen kann...void hätte auch Schlumpf heissen können..eine leere Variable)
Dann die Formel zum Befüllen eines weiteren Feldes anhand der Mandanten ID aus dem Feld Mandanten_ID:
_Kunden_Typ:=@dblookup("":"NoCache";"anderer_Server":"andere_Datenbank";"Suchansicht";"Mandanten_ID";"Super_Kunden_Feld");
Field Guter_Kunde:=@if(@iserror(_Kunden_Typ);"nix gefunden";_Kunden_Typ);
_voiiiid;
-
DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D DANKE!!!!!!!!!! :D
SUPER!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ES KLAPPT!!!!! ;D ;D ;D
100000000000 Dank!!!!
Du bist echt super!!!!!
CrasyCoder
-
:o ;) ;D
na siehste, Glückwunsch !!!
Klappt immer wenn man sich durchbeißt. :)