0

Button im Eingabefeld

Hallo Zusammen!

Ich bin ein NINOX- Neuling und hab leider auch nicht viel Erfahrung mit programmieren.

Ich möchte gerne eine Artikeldatenbank mit Ninox erstellen. Für die Erfassung der Artikel würde ich es praktisch finden wenn man Buttons direkt bei der Eingabemaske der Artikel hat.

Für die Einfachere Darstellung habe ich nur mal 4 Daten erfasst.

ARTIKELNUMMER, FOTO, BEZEICHNUNG, LAGERSTAND

Nun habe ich mir gedacht dass folgende Buttons für mich sinnvoll wären:

OK ... Datensatz wird normal geschlossen (wird gespeichert)

NEU ... Neue Daten sollte eingegeben werden können, Formular soll gelöscht werden. Wenn möglich sollte sich das aber alles im aktuellen Fenster abspielen, kein neues Fenster soll öffnen.

NEU + Kopieren ... Der alte Datensatz soll (bis auf die Art.Nr.) kopiert werden. Wenn nötig sollte man dann noch Daten ändern können. Wiederum soll sich alles im aktuellen Fenster abspielen, kein neues Fenster soll öffnen.   

Datensatz löschen ... Der aktuelle Datensatz soll gelöscht werden. Danach soll jener Artikel welcher im Datensatz vor diesem Artikel steht in die Maske geladen werden.

Mir ist das bewußt dass es teilweise für meine Bedürfnisse kleine Schaltflächen bei NINOX gibt. Bin aber der Meinung dass bei Eingabe mehrerer Artikel die Buttons eine wesentliche Zeitersparniss darstellt.

Hab auch schon selbst viel mit dem Code probiert, jedoch hab ich nie genau das zusammengebracht was ich wollte.

Im Forum habe ich auch schon mehrer Stunden verbracht, Leider bekommt man bei der Suche gefühlte 5000 Treffer. Leider hab ich hier die gesuchte Hilfe nicht gefunden.

Nun bitte ich Euch um Hilfe bei der erstellung des Codes für die Buttons.

Besten Dank im Vorraus für Eure Hilfe.

 

LG, Gerald

8 Antworten

null
    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Gerald,

    OK

    ---

    closeRecord()

    ---

    NEU

    ---

    let new:=create DEINETABELLE;
    openRecord(new)

    ---

    NEU+Copy
    ---

    let neu:=duplicate (this);
    neu.'Artikel Nummer':=null;
    openRecord(neu)

    ---

    DS löschen

    ---

    delete this;
    let myLast:=last(select DEINETABELLE);
    openRecord (myLast);

    ---

    Leo

    • Gerald.1
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Leo!

    Herzlichen Dank für deine Hilfe!

    Du bist ein Genie! Was ich probiert und probiert habe, und es scheint irgendwie gar nicht so kompliziert zu sein. Da sieht man wieder Wissen ist Macht ;-) .

    Ein kleines Problem habe ich noch mit dem "Datensatz löschen". Prinzipiell funktioniert es, jedoch springt er immer zu einem nicht nachvollziehbaren Artikel. Was nun nicht so das große Problem ist. Bei der Iphone- Version stürzt das System immer ab. Es kommt ein schwarzer Bildschirm wenn ich dann auf "Datensatz löschen" drücke.

    Mein neuer Plan wäre nun, dass man nach dem Drückern "Datensatz löschen" wieder in die Übersichtstabelle kommt, jedoch wenn ich "closeRecord()" verwende schließt er am Iphone das Fenster und geht zum Übersichtsfenster wo die Auswahl der Datenbanken ersichtlich ist. Gib es da einen Befehl wo man wieder zur Tabelle zurück kommt, oder wo er wirklich nur das Formularfenster schließt?

    Kannst du mir da nochmal aus der Patsche helfen?

    Herzlichen Dank nochmals für deine Hilfe!!

    LG, Gerald

    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Gerald,
    Ich bin davon ausgegangen, dass der zu löschenden Artikel immer der letzte in der Tabelle steht. Wenn es aber auch die Artikel aus der Mitte der Tabelle gelöscht werden, dann sollte die Formel anders aussehen:

    ---

    let me:=this;
    let myNr:=max(select DEINETABELLE [number(Nr)<me.number(Nr)].number(Nr));
    openRecord(record(DEINETABELLE,myNR));
    delete me

    ---

    Leo

    • Gerald.1
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Leo!

    Ich habe diesen Button "Datensatz löschen" auch z.B. mit folgenden Code probiert

    delete this;          => da komm ich beim Iphone 7 immer auf die Auswahlliste der Tabelle, ich würde danach aber                                   immer gerne auf die Tabelle selbst kommen (oder halt wie am Anfang geplant auf einen anderen                                 Artikel)

    -----

    delete this;
    closeRecord();   => detto obiger Code

    -----

    delete this;

    openTable("Artikel"); => da kommt beim Iphone 7 immer ein schwarzer Bildschirm (nix geht mehr).

     

    ... kann das ein Fehler am Programm sein oder benötigt man da einen eigenen Code?

    Auf der Online- Variante am PC funktioniert es immer super, komisch?

    LG, Gerald 

    • Gerald.1
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Leo!

    Sorry ich habe die vorige Antwort schon vorher geschrieben gehabt!

    Ich hab nun deinen neuen Code probiert. Komischer Weise hat es einige Male funktioniert, jedoch wenn man das öfters macht, schließt er die Eingabemaske wieder. Am Iphone funktioniert zwar das löschen, jedoch schmeißt er mich nach dem Löschen immer auf die Auswahlseite für die Tabelle.

    Meine Anforderung nach dem Löschen:

    entweder

    -) zurück in die Tabelle 

    oder

    -) den vorherigen Datensatz im Formular anzeigen

    Was mach ich da blos falsch?

    Herzlichen Dank für deine prompte Unterstützung.

    Liebe Grüße aus Österreich, Gerald 

    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Gerald,

    für Web hilft folgendes:

    ---

    let me := this;
    let myNr := max((select DEINETABELLE)[number(Nr) < me.number(Nr)].number(Nr));
    openRecord(record(DEINETABELLE,myNr));
    delete (select DEINETABELLE where Nr = me.Nr)

    ----

    bei iPhone kommt es tatsächlich zu dem schwarzen Bildschirm. Ich weiß auch nicht wie man es beheben kann. Mache auch für iPhone gar nichts, weil für mich absolut unbrauchbar.

    Leo

    • Gerald.1
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Leo!

    Danke für deine Tipps. Funktioniert nun eigentlich ganz gut. Beim Iphone geht er mit dem neuen Code wieder in die Auswahlübersicht zurück, aber das nervt wahrscheinlich eh nur jetzt beim Testbetrieb, danach wird man wahrscheinlich nicht soviel löschen. Ich schreib das mit dem schwarzen Bildschirm am Iphone trotzdem der Fa. Ninox, vielleicht ist das ja ein Programmfehler.

    Hab nun wieder ein kleines Problem bemerkt. Beim "NEU+Copy"- Button kopiert er mir das Bild nicht. Kann man das auch irgendwie kopieren, bzw. den Verweis?

    LG, Gerald

    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Stimmt, die Bilder kann man nicht kopieren. Man kann eine Referenz erstellen, aber das ist ein anderes Feld. (Funktionsfeld). man muss dann noch ein Zahlenfeld "ReferenzID" hinzufügen und beim Funktionsfeld die Formel:

    if ReferenzID then record(DEINETABELLE,ReferenzID) end

    Die Sichtbarket bei diesem Feld wäre dann 

    ---

    ReferenzID

    ---

    und die Sichbarkeit von Bidfeld entsprechen 

    ---

    not ReferenzID

    ---

    und man sollte noch einen knopf einbauen "Referenz entfernen" mit der Formel:

    ---

    ReferenzID:=null

    ---

    Leo

Content aside

  • vor 3 JahrenZuletzt aktiv
  • 8Antworten
  • 1325Ansichten