Ankündigung

Einklappen
Keine Ankündigung bisher.

Auf 2 MDB zugreifen und sie als Join darstellen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Auf 2 MDB zugreifen und sie als Join darstellen

    Hallo zusammen,
    ich möchte mit php zwei MS MDB auslesen.
    Ich kann eine schon auslesen aber es ist ja nur ein ODBC Zugriff möglich,
    kann mir jemand sagen wie ich das machen kann.


    Hier ist mal ein Zugriff
    Ichj will aber eine 2. ZUgriff machen und 2 Tabellen Felder verknüpfen.

    Kann mir jemad helfen, ich hatte da schon mal in diesen Forum gefragt, habe es damals aber nicht geschafft.

    PHP-Code:
    <?php


    $cfg_dsn 
    "DRIVER=Microsoft Access Driver (*.mdb);
    DBQ= /Users/Juergen/Documents/db/bestand.mdb;
    UserCommitSync=Yes;
    Threads=3;
    SafeTransactions=0;
    PageTimeout=5;
    MaxScanRows=8;
    MaxBufferSize=2048;
    DriverId=281;
    DefaultDir=C:/Programme/Gemeinsame Dateien/ODBC/Data Sources"
    ;

    $cfg_dsn_login "";
    $cfg_dsn_mdp "";
     
    if (!
    $connect odbc_connect($cfg_dsn,$cfg_dsn_login,$cfg_dsn_mdp)){
    echo 
    "Fehler";
    exit;
     }
     
    $result odbc_exec($connect"SELECT * FROM tabbestand");
     
    while(
    $row odbc_fetch_array($result)){
     
    $i++;
     echo(
    'var'.$i.'='.$row["bestand"]);
    }
     
    ?>

  • #2
    Warum fängst du wieder von vorne an wie hier [Erledigt] mehrere mdb mit odbc_connect ?. Dort gab ich schon den Hinweis PDO zu nutzen. Das wolltest du dir anschauen.
    Für den Start:
    PHP-Code:
    //mdb im akt verzeichnis
    $mdb realpath('meine_access.mdb');
    $db = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq=$mdb;Uid=Admin"); 

    Kommentar


    • #3
      Weil ich es leider nicht hinbekomme. mit PDO habe ich es auh schon versucht.
      Wie verbinde ich 2 SQL Query.. kannst du mir ein Beispiel geben? das Würde mir sehr helffen... Ich hasse das Access es kostet mich schon Tag und Wochen und ich bekomme es nicht hin
      Ich habe 3 Access DB die ich verküpfen will da ich da Daten raussuchen will. Der Import in Mysql hatte ich auch schon, kann aber vergessen.

      Glaub ich würde nicht fragen wenn ich es hinbekommen hätte ...

      Kommentar


      • #4
        Zitat von JNPANZER Beitrag anzeigen
        Der Import in Mysql hatte ich auch schon, kann aber vergessen.
        Warum? Ist z.Zt. die einzige Alternative die ich anhand der spärlichen Informationen sehe. Ein sog. Cross-Join über mehrere Access-Datenbanken funktioniert nicht.
        Also die MDB nacheinander per PDO öffnen und alle in eine MySQL-DB schaufeln.

        Kommentar


        • #5
          Hier habe ich das Problem das die Daten nicht aktuell sind....
          Bin einfach nicht Glücklich über diese Lösung mit MYSQL DB. Ich Suche eigentlich eine ander Lösung, du wirst schon Recht haben das ich das anders nicht hinbekommen werde..
          .
          Ich muss da noch mal in mich gehen, und checken wi lange so ne Datenübernahme dauert...
          Danke für die Hilfe.

          Kommentar


          • #6
            Also lange gebastelt und viel überlegt
            Ich hab eden Weg nun über mdbtool in mysql gewählt
            so sind die Daten wegenigstens einigermaßen aktuell aus der Access DB


            dies geht mit mdbtools unter Linux

            (Datenbank anlegen)
            Code:
            mdb-schema artikel.mdb mysql | grep -v ^DROP | mysql -umeister -pmeister aussendienst
            (Datenbank füllen)
            Code:
            mdb-export -I 'mysql' artikel.mdb tabartikel | sed -e 's/)$/)\;/' | mysql -umeister -pmeister aussendienst

            Wenn jemand mal so was machen darf... ist glaube ich der beste Weg, Wenn man nur eine MDB braucht kann man das sicher über ODBC machen.

            .


            Kommentar


            • #7
              So nun wenn mir jemand sagen kann wie man das Eintrag im Forum schließt kann ich das gelöst markieren...

              Kommentar


              • #8
                Danke für die Lösung.. Schließen ist derzeit noch nicht möglich.

                Kommentar


                • #9
                  Als gelöst markieren ist ok, ein Schließen sollte den Admins vorbehalten bleiben. Sonst könnte ich jetzt nicht mehr mein Senf dazugeben.

                  Mag sein das die Lösung über Tools von JNPANZER schnell ist, es geht aber auch nur mit PHP. Hier mal angedeutet für eine Tabelle:
                  PHP-Code:
                  //Testdatenbank MySQL
                  $dsn 'mysql:dbname=test;host=localhost;charset=utf8';
                  $user 'root';
                  $password '*****';
                  $options = array(
                    
                  PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING,
                    
                  PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
                  );
                  $db = new PDOdb($dsn$user$password,$options);

                  //Access-DB
                  $mdb realpath('access_test.mdb');
                  $dsn "odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq=$mdb";
                  $dba = new PDOdb($dsn,"Admin",null,$options);
                  $sql "Select * from Gruppe";
                  $data $dba->queryAll($sql);

                  //Tabelle Gruppe für MySQL manuell angelegt
                  $db->clearTable("Gruppe");
                  $countInserts $db->insertAll("Gruppe",$data); 
                  Warum müssen die MySQL-DB/Tabellen immer neu erstellt werden? Die Tabellenstruktur Gruppe wurde in MySQL einmalig manuell erstellt.
                  Im obigen Skript wird die Tabelle nur geleert bevor die aktuellen Daten.
                  Aus Faulheit habe ich mit einer erweiterten PDO-Klasse gearbeitet, es geht genau so mit Pure-PDO.

                  Kommentar


                  • #10
                    Zitat von jspit Beitrag anzeigen
                    Als gelöst markieren ist ok, ein Schließen sollte den Admins vorbehalten bleiben. Sonst könnte ich jetzt nicht mehr mein Senf dazugeben.
                    Richtig.. wenn dann wird es nur ein "auf Erledigt setzen" geben. Ein echtes Schließen eines Themas durch den TE ist nicht vorgesehen.

                    Kommentar


                    • #11
                      Hallo jspit,
                      Also erst mal danke für deine tolle Hilfe, ich habe mich für das Linux mdbtool entschieden weil es einfacher ist. Ich lass da einen cronjob laufen und Schaufel alle drei Stunden die MDB mit 300 MB DB rüber. Ich habe immer aktuelle Daten. Ich schau mir mal deine Lösung an. Das dauert mit mdbtool nur 45 sec. Das hat mich überzeugt. Vielleicht geht's mit deiner noch schneller.
                      Das mit den erledigt kenne ich von früher, hab mir nur ein Wolf gesucht wo der Flag ist.

                      Kommentar


                      • #12
                        Zitat von jspit
                        PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING
                        Was soll das denn?

                        Kommentar


                        • #13
                          • PDO::ERRMODE_WARNING
                            Zusätzlich zum Setzen des Fehler-Codes wird PDO eine traditionelle E_WARNING-Nachricht ausgeben. Diese Einstellung ist nützlich während des Debuggens/Testens, wenn Sie sehen wollen, welche Probleme aufgetreten sind, ohne den Ablauf der Anwendung zu unterbrechen.

                          Kommentar

                          Lädt...
                          X