Re: Feldnamen einer DB auslesen auch ohne db.fields Lizenz V2? - 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 Montag, 3.März.2008, 18:28.
    Re: Feldnamen einer DB auslesen auch ohne db.fields Lizenz V2?

      Danke erst mal für die Antwort.

      >Gibt es einen bestimmten Grund warum du ohne die .fields auskommen möchtest?
      

      Ja, das funktioniert gelegentlich nicht, warum, weiss ich nicht und es ist auch nicht reproduzierbar, es kommt dann gelegentlich die berüchtigte "Kann xxx.dbfields nicht öffnen...."

      Der Ansatz ist, dass ich die Feldliste brauche, um für beliebige DBs (mit unbekannter Feldmenge) mit einem Formular für Neuanlage und Ändern auszukommen und deshalb die Werte für einen Datensatz aus den "normalen" Feldnamenvariablen in solche mit dem Präfix "f_" umspeichern will, welche dann als Values im Formular eingesetzt werden.

      Aber wenns nicht geht, dann mach ich das im Moment hart, das geht ja auch, ist halt nur nicht so schön universell verwendbar....


    Antworten

 Alle Einträge zum Thema: Zur Liste 
    Beitrag von hempelr (1976 Beiträge) am Montag, 3.März.2008, 14:18.
    Feldnamen einer DB auslesen auch ohne db.fields Lizenz V2?

      Gibt es eine Möglichkeit, die Feldnamen ner DB auch ohne die db.fields in eine Liste zu bekommen?
      %_loop scheint ungeeignet wenn mehr als ein DB-Aufruf in einem Script behandelt wird, da steht alles drin, was irgendwann mal im Scriptverlauf geholt wurde, ganz schön gross und voller Zeugs, dieser Hash ;-)

      Machen wollte ich folgendes:

      %$h_fwerte = &i_get_fwerte('db' => 'dbname', 'dsn' => 'Datensatznummer');
      ...
      sub i_get_fwerte { ################################################################
      $a_debug.= "<i>A sub i_get_fwerte</i><br /><ul>";
      #Aufruf: &i_get_fwerte('db' => 'dbname', 'dsn' => 'Datensatznummer');
      # ............................................................ #
       my ($fname, $workdb_feldliste, $db, $dsn, @workdb_feldliste,
          %iparas, %h_fwerte,
          ) = undef;
      # ............................................................ #
       %iparas = @_;
      #. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .#
          if (defined $iparas{'db'} && defined $iparas{'dsn'}){
          $db = $iparas{'db'}; $dsn = $iparas{'dsn'};
          get "Id==!$dsn range=0,1", $db, "holfwerte";
          @$workdb_feldliste = &i_get_feldliste('db'=>$db);
          foreach $fname (@workdb_feldliste) {
             $h_fwerte{$fname} = $$fname; # Hash mit Feldnamen/Feldwerten des Datensatzes
             $a_debug.= "\$fname($fname) - \$$fname($$fname)<br>";
          } # E foreach
         } else {
            return undef;
         }
      $a_debug.= "</ul><i>E sub i_get_fwerte</i><br />";
      return \%h_fwerte;
      } ################################################################
      # ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #
      sub i_get_feldliste { ################################################################
      $a_debug.= "<i>A sub i_get_feldliste</i><br /><ul>";
      # Aufruf: &i_get_feldliste('db' => 'dbname')
      # ............................................................ #
      my ($db,@workdb_feldliste,$feldname,$feldwert,
       ) = undef;
      # ............................................................ #
      %iparas = @_;
      #. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .#
         if (defined $iparas{'db'}){
         get "Id=* range=0,1", $db, "holfeldiste";
            while(get_next("holfeldliste")){
               while( ($feldname,$feldwert) = each %_loop){
           push @workdb_feldiste, $feldname;
        }
            }
         } else {
           return undef;
         }
      $a_debug.= "</ul><i>E sub i_get_feldliste</i><br />";
      return \@workdb_feldiste;
      }################################################################
      

      Dabei steht dann im %$h_fwerte alles was irgendwann mal in dem Script per DB-Aufruf geholt wurde...
      Gibts da ne Lösung für?
      Danke für Tipps

     Antworten

    Beitrag von Pouraga (1396 Beiträge) am Montag, 3.März.2008, 15:35.
    Re: Feldnamen einer DB auslesen auch ohne db.fields Lizenz V2?

      Denn Ansatz verstehe ich nicht so ganz, durch den Rücken in die Brust. (while, while und each, damit sind wir schon in der dritten Schleifen ebene innerhalb von 2 Zeilen ;) )

      Gibt es einen bestimmten Grund warum du ohne die .fields auskommen möchtest? Weil eigentlich ist es genau die Abfrage welche du an dieser Stelle brauchst, nicht weniger, aber vor allem auch nicht mehr.
      Ungetestest:

      get "Id=*", "$db.fields", "holfeldiste";
       while(get_next("holfeldliste")){
           push @workdb_feldiste, $Feldname;
       }
      

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Montag, 3.März.2008, 18:28.
    Re: Feldnamen einer DB auslesen auch ohne db.fields Lizenz V2?

      Danke erst mal für die Antwort.

      >Gibt es einen bestimmten Grund warum du ohne die .fields auskommen möchtest?
      

      Ja, das funktioniert gelegentlich nicht, warum, weiss ich nicht und es ist auch nicht reproduzierbar, es kommt dann gelegentlich die berüchtigte "Kann xxx.dbfields nicht öffnen...."

      Der Ansatz ist, dass ich die Feldliste brauche, um für beliebige DBs (mit unbekannter Feldmenge) mit einem Formular für Neuanlage und Ändern auszukommen und deshalb die Werte für einen Datensatz aus den "normalen" Feldnamenvariablen in solche mit dem Präfix "f_" umspeichern will, welche dann als Values im Formular eingesetzt werden.

      Aber wenns nicht geht, dann mach ich das im Moment hart, das geht ja auch, ist halt nur nicht so schön universell verwendbar....

     Antworten

    Beitrag von Joerg (159 Beiträge) am Freitag, 14.März.2008, 18:54.
    Re: Re: Feldnamen einer DB auslesen auch ohne db.fields Lizenz V2?

      Du hast hier übrigens einen Schreibfehler drin:

      get "Id=*", "$db.fields", "holfeldiste"; <--- das "l" fehlt in "holfeldiste"
       while(get_next("holfeldliste")){ 
           push @workdb_feldiste, $Feldname; <--- das "l" fehlt in "holfeldiste"
       }
      

      Gruß
      Jörg

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Samstag, 15.März.2008, 09:15.
    Re: Re: Re: Feldnamen einer DB auslesen auch ohne db.fields Lizenz V2?

      ;-) Kann passieren...

      Um die Scripte auch auf andere Datenbanksysteme einfacher migrieren zu können, nutze ich das mit der db.fields selbst nicht mehr.
      Es wird einfach im betreffenden Modul, das die Datenbank(en) betrifft, jeweils ein Array / Arrayreferenz mit den Feldnamen angelegt, die im eignenen Formular dann mit an die DB-Bearbeitungsroutine übergeben wird und somit kann man mit einem Block für die DB-Aktionen alles komplett "erschlagen", Datumfelder werden über ne Abfrage auf ihre Datumsteile, die sich ja im %_put befinden, wenn die Formfeldnamen mit := abgeschlossen werden, untersucht und ggf. umgespeichert, da kann man dann auch das chg nutzen um DB-Felder zu leeren.

      Aber gut aufgepasst haste - da denken doch immer wieder mal Leute mit ;-)

      Viel Spaß mit BasePortal weiterhin...

     Antworten

    Beitrag von Claus (4645 Beiträge) am Samstag, 15.März.2008, 20:22.
    Re: Re: Re: Feldnamen einer DB auslesen auch ohne db.fields Lizenz V2?

      "Was siehst du aber den Splitter in deines Bruders Auge, und wirst nicht gewahr des Balkens in deinem Auge?"

      Auszug aus der Bibel

      :)

      Nur mal so...

      Gruesse

      Claus

      PS: hat es denn bei den zufälligen Datensätzen funktioniert?

     Antworten

    Beitrag von Joerg (159 Beiträge) am Sonntag, 16.März.2008, 11:52.
    Re: Re: Re: Re: Feldnamen einer DB auslesen auch ohne db.fields Lizenz V2?

      Hab den Splitter gefunden, weil ich meinen Balken entfernen wollte ;-)
      Es hat geklappt (ein Mix aus Splitter und Deiner Antwort):

      <perl>
         get "Id==* sort=? range=0,4", "datenbank", "liste";
            while(get_next("liste"))
      {
      out "$Vorname";
      }
      

      </perl>

      Vielen Dank!

      Gruß
      Jörg

     Antworten

    Beitrag von Claus (4645 Beiträge) am Montag, 17.März.2008, 11:48.
    Re: Re: Re: Re: Re: Feldnamen einer DB auslesen auch ohne db.fields Lizenz V2?

      Prima, das mit dem Zitat war mehr allgemein und auch und vor allen Dingen ein Anflug von Selbstironie. Hatte gerade vorher einen Fehler bei mir in einem Template gesucht. Template zigfach immer wieder gecheckt, bis ich felststellte, daß ich nur vegessen hatte, den DB-Namen zu ändern..;)

      Bei den eigenen Sachen unterliegt man immer mal der "Betriebsblindheit", während einen bei fremden Sachen der Fehler oder die Lösung förmlich "anspringt".

      Gruesse

      Claus

     Antworten


     
 Liste der Einträge von 11100 bis 11250: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.10s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!