Fehler mit Lookup Befehl

  • Hi,


    ich habe zwei Probleme die ich mir nicht erklären kann.


    1.
    Ich habe eine Ansicht die über einen Lookupbefehl aus einer weiteren Ansicht Daten (Zahlen) holt und diese mit @Sum summiert.
    Die Datenbank liegt auf dem Server und zeigt mir ständig einen Fehler.
    Kopiere ich die Datenbank jedoch auf meine Lokale Platte läuft das ganze einwandfrei.


    Kann mir jemand sagen warum? Es kann doch nicht sein das es Lokal funzt und auf dem Server nicht.




    2.
    Ähnliches Problem, ich habe eine Ansicht mit Kategorien, die ersten 4 Eintragungen lassen sich über den DBLookup Befehl aufrufen die anderen nicht.




    Ich hoffe jemand kann mir dabei helfen, ich weiß leider nicht mehr weiter.



    Gruß
    Christian

  • Zu deinem ersten Punkt siehe Hilfe zu @DBLookup:


    Zitat


    This function does not work in column or selection formulas, or in mail agents.


    Was meinst du mit sie lassen sich über den DBLookup Befehl aufrufen ?

  • zu 1


    _Lookup := @DbLookup( "":"NoCache"; "":""; "(LookupAnträge)"; @Text(@Date(Antrag_Datum)) + "§" + @Text(@Time(Antrag_Zeit)); 2; [FailSilent]);


    @If( Antrag_AnzahlPer != ""; @Sum(_Lookup); Nothing)


    Steht in dem Feld drin, welches die Daten hinterher halten soll.


    Auf dem Server erscheint nach dem Speichern oder Aktuallisieren das eine Zahl erwartet wird.



    Die Ansicht besteht aus dem ersten Feld [@Text(@Date(Antrag_Datum)) + "§" + @Text(@Time(Antrag_Zeit))] und einem zweiten Feld [AnzahlPers] in der eine Zahl steht.


    Wie gesagt, Lokal funzt es, auf dem Server nicht




    zu 2.
    Ich überprüfe das Feld beim speichern des Dokuments. Der DBLookup Befehl vergleicht die erste Spalte der Ansicht mit einem Feldinhalt in der Maske und holt sich dann die Kategorie bzw. den Wert in Spalte 2.


    Bei den ersten 4 Reihen in der Ansicht funktioniert das auch, da bleiben die Daten auch nach dem speichern im Feld.


    Bei allen weiteren löscht er den Inhalt des Feldes obwohl der Inhalt des Key-Feldes mit dem der 1 Spalte der Ansicht übereinstimmt

  • Dann mach doch mal ein @TextToNumber um deine Werteliste.


    @If( Antrag_AnzahlPer != ""; @Sum(@TextToNumber(_Lookup)); Nothing)


    Deinen zweiten Punkt verstehe ich immer noch nicht wirklich.
    Du arbeitest doch in einem Dokument und machst einen Lookup auf eine Ansicht.
    Und in welchen Feldern des Dokumentes tut es nicht ?
    Und wie sieht die Formel dazu aus ?

  • :D


    Also, ich habe eine Datenbank in der die Kategorien in einer eigenen Maske erstellt werden.
    Diese Kategorien werden über eine Picklist in die Hauptmaske geholt.


    Ich kontrolliere aber gleichzeitig bei jedem speichern ob die Kategorie noch stimmt. Dazu habe ich versteckt zu jeder Kategorie (jedem Kategorie-Dokument) eine Zahl kreiert [über @If(@IsNewDoc; @DocNumber; KategorieNr) ]


    Diese Zahl wird über die Pickliste ebenfalls auf meiner Hauptmaske gepeichert und über diese Prüfe ich die aktuallität der Kateorie.
    (beim ändern der Kategoriebezeichnung bleibt die Zahl ja gleich)


    @DbLookup("":"NoCache";"":""; "(LookupKategorie)"; KategorieZahl; 2;[FailSilent])


    Die Ansicht ist so aufgebaut das in der ersten Spalte die Zahl und in der Zweiten die Kategorie steht. In der dritten stehen die Daten für die Pickliste [ KategorieNr + "§" +KategorieLookup ]







    zu 1
    Das hatte ich auch schon probiert, dann wandelt sich der Fehler in ein error.
    Mich wundert vor allem das es lokal funktioniert und auf dem Server nicht.

  • Hm,


    kannst du mir eine andere Möglichkeit nennen wie ich den Kategorien Zahlen zuordnen kann? Meine erste Idee war ja Lookup und dann die letzte Zahl + 1, aber das habe ich nicht wirklich hinbekommen.
    Irgendwie wollte das nicht so laufen wie ich es gerne gehabt hätte.

  • Teil 1 habe ich gelöst, irgendwie hat er auf dem Server das Datum in der Maske anders aufgelöst als das Datum in der Ansicht. Jetzt habe ich einfach komplett aufgelöst [ @Year .. + "§" + @Month ...]. Dann funzt es.


    Bei Teil 2 habe ich immer noch das Problem das er die Zahl nicht erkennt. Ich habe nun ein Feld in meiner "Einstellungsmaske" erzeugt, das als Counter funktioniert.


    Mit


    If uidoc.IsNewDoc Then
    Set view = db.GetView( "Einstellung" )
    Set doc = view.GetFirstDocument /* Es ist nur ein doc enthalten

    If Not(doc Is Nothing) Then
    var = doc.CounterKategorie(0)
    Call uidoc.FieldSetText("KategorieNr", Cstr(var)) /* das Feld nimmt nur Text auf */
    var = var + 1
    doc.CounterKategorie = var
    Call doc.Save ( True, False )
    End If


    End If




    Überprüfen tue ich hinterher mit:


    Set db = session.CurrentDatabase
    Set view = db.GetView( "Nach Kategorie" )
    Set view2 = db.GetView( "(LookupKategorie)" )
    Set doc = view.GetFirstDocument

    While Not(doc Is Nothing)

    suchNr = doc.KategorieZahl(0)
    If Not(suchNr = "") Then

    Call view2.FTSearch( Cstr(suchNr), 0 )
    Set doc2 = view2.GetFirstDocument

    -->
    If Not (doc2 Is Nothing) Then
    Forall x In doc2.GetItemValue("KategorieLookup")
    doc.Kategorie = x
    End Forall
    End If
    <--

    End If

    Call doc.Save ( True, False )
    Set doc = view.GetNextDocument ( doc )



    Ich habe die suchNr auch extra noch mal als String deklariert, funzen tut es dennoch nicht.


    Die Kategorie und die KategorieNr (suchNr) werden per Picklist in die Felder der Hauptmaske (doc) übergeben


    Ich weiß beim besten willen nicht wieso er das nicht macht. eigentlich suche ich mit einem String nach einem String.
    Dennoch findet er nie ein passendes document und überspringt die If - Schleife --> <--

  • Habahabahabahbabahaba,


    ich weiß beim besten willen nicht warum, aber auf einmal läuft das ganze. *kratzAmHinterkopf*


    Das ist wieder eines der Phänomene wo ich hoffe es nicht noch mal in die andere Richtung auftritt.



    Gruß und Danke
    Christian

  • Hm,


    es ist echt lustig. Jetzt klappt es wieder. Es muß irgendwie an der indizierung liegen, die wohl nicht nachkommt (dabei ist die DB sehr klein)
    machmal werden die Kategorien sofort erkannt, manchmal erst später.


    Danke für eure Antworten
    Gruß
    Christian