Re: @CB - Fragen zu einigen einst offenen Dingen - baseportal Forum - Web-Anwendungen einfach, schnell, leistungsfähig!
baseportal
English - Deutsch "Es gibt keine dummen Fragen - jeder hat einmal angefangen"

 baseportal-ForumDie aktuellsten 10, 30, 50, 100 Einträge anzeigen.  

 
 Ausgewählter Eintrag: Zur Liste 
    Beitrag von hempelr (1976 Beiträge) am Samstag, 6.März.2004, 13:47.
    Re: @CB - Fragen zu einigen einst offenen Dingen

      mhm - naja - das ist so ein Ding... Ich hab da einen Scriptblock, der sowohl bei Feldübergabe mit feldname= als auch bei Feldübergage mit feldname:= Neuanlegen, Ändern und Löschen von DS erlaubt. Damit nicht übergebenen Datenfeldinhalte nicht gekillt werden, hol ich die und schreib die dann in den Put-Hash und führe erst dann das Ändern mittels chg aus.
      Hier mal der betreffenden Codeblock:
             # - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
             # Wenn Daten aus eig. Form mit "feldname=" übergeben werden und
             # %_put deshalb nicht da ist; Workaround f. chg, damit DS-Inhalte nicht
             # gekillt werden, die erhalten bleiben sollen (Feld bspw. nicht im eigenen Formular)
             if (not defined $_put{_amount} ){# wenn %_put nicht vorhanden
                # Wichtigstes Paar f. %_put, damit es aktiv ist und chg undef richtig ausgef. wird
                $_put{_amount} = 1;
                if ($dsn){get "Id==!$dsn", "$db_daten", "hole_chgds";}
                get "Id==*", "$db_daten.fields", "edsfelder";
                while(get_next("edsfelder")){
                  if ($Field ne "Id"){# ID nicht mit in \%_put (Ändern) - sonst inkonsistente DB!
                     $_put{$Field} = ${$Field};  #alle Werte ausser ID des DS
                  }
                  if (exists ($_get{$Field}) && $_get{$Field} ne $_put{$Field}){
                     $_put{$Field} = $_get{$Field} ;  # Inh. ändern wenn in get vorh. und anders
                  }
                } # E while-get-next edsfelder
             } # E if not put_amount
      
      ....
      if ($act eq "c" && $dsn ne ""){
           chg "Id==!$dsn", undef, "$db_daten";
           $act = "l";
           $a_actiontext = "Datensatz geändert...";
           $dsn = "";
      }
      
      ....
      Das hieße ja, wenns funzt, dass der Teil des Umkopierens vom get_hash in den Put-Hash vereinfacht werden könnte (Vergleich auf Inhaltsgleichheit und ggf. Ändern könnte entfallen) - ich habs noch nicht probiert - und was nimmt man nun als Befehl - mod oder chg - und: bei alt und neu gelöst?


    Antworten

 Alle Einträge zum Thema: Zur Liste 
    Beitrag von Christoph Bergmann (8110 Beiträge) am Samstag, 6.März.2004, 13:17.
    Re: @CB - Fragen zu einigen einst offenen Dingen

      Die Einschränkung zu 4. hat sich aber gelöst, d.h. es geht definitiv, insofern weiss ich nich ob Du den Workaround mit chg noch brauchst...

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Samstag, 6.März.2004, 13:47.
    Re: @CB - Fragen zu einigen einst offenen Dingen

      mhm - naja - das ist so ein Ding... Ich hab da einen Scriptblock, der sowohl bei Feldübergabe mit feldname= als auch bei Feldübergage mit feldname:= Neuanlegen, Ändern und Löschen von DS erlaubt. Damit nicht übergebenen Datenfeldinhalte nicht gekillt werden, hol ich die und schreib die dann in den Put-Hash und führe erst dann das Ändern mittels chg aus.
      Hier mal der betreffenden Codeblock:
             # - - - - - - - - - - - - - - - - - - - - - - - - - - - - #
             # Wenn Daten aus eig. Form mit "feldname=" übergeben werden und
             # %_put deshalb nicht da ist; Workaround f. chg, damit DS-Inhalte nicht
             # gekillt werden, die erhalten bleiben sollen (Feld bspw. nicht im eigenen Formular)
             if (not defined $_put{_amount} ){# wenn %_put nicht vorhanden
                # Wichtigstes Paar f. %_put, damit es aktiv ist und chg undef richtig ausgef. wird
                $_put{_amount} = 1;
                if ($dsn){get "Id==!$dsn", "$db_daten", "hole_chgds";}
                get "Id==*", "$db_daten.fields", "edsfelder";
                while(get_next("edsfelder")){
                  if ($Field ne "Id"){# ID nicht mit in \%_put (Ändern) - sonst inkonsistente DB!
                     $_put{$Field} = ${$Field};  #alle Werte ausser ID des DS
                  }
                  if (exists ($_get{$Field}) && $_get{$Field} ne $_put{$Field}){
                     $_put{$Field} = $_get{$Field} ;  # Inh. ändern wenn in get vorh. und anders
                  }
                } # E while-get-next edsfelder
             } # E if not put_amount
      
      ....
      if ($act eq "c" && $dsn ne ""){
           chg "Id==!$dsn", undef, "$db_daten";
           $act = "l";
           $a_actiontext = "Datensatz geändert...";
           $dsn = "";
      }
      
      ....
      Das hieße ja, wenns funzt, dass der Teil des Umkopierens vom get_hash in den Put-Hash vereinfacht werden könnte (Vergleich auf Inhaltsgleichheit und ggf. Ändern könnte entfallen) - ich habs noch nicht probiert - und was nimmt man nun als Befehl - mod oder chg - und: bei alt und neu gelöst?

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Samstag, 6.März.2004, 22:08.
    Re: @CB - Fragen zu einigen einst offenen Dingen

      Prinzipiell gelten hier in der angegebenen Reihenfolge:

       - never change a running system ;-)
      

       - im Zweifel ausprobieren ;-)

       - Ausser Sicherheitslücken werden Bugs nur in der neuen Version gefixed...
      

     Antworten


     
 Liste der Einträge von 31501 bis 31651:Einklappen Zur Eingabe 
Neueste Einträge << 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | Neuere Einträge < Zur Eingabe  > Ältere Einträge | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 >> Älteste Einträge


Zurück zur Homepage

© baseportal.de. Alle Rechte vorbehalten. Nutzungsbedingungen



powered in 0.06s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!