[PHP/MySQL] MySQL -> Access MDB (zonder handmatige import)

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • bartosiej
  • Registratie: Juli 2005
  • Laatst online: 18-09 16:17
Ik ben al een tijdje opzoek naar de beste manier om in een php script een SQL query uit te voeren en deze query on-the-fly neerzetten in een .mdb bestand (van MS Access)..

Ik heb echter nog niks nuttigs gevonden, bij het zoeken ben ik wel veel scriptjes die de table in een CSV bestandje zetten en dit bestandje kan dan later handmatig worden geimporteerd in MS Access.., dit is echter niet wat ik zoek.. Ik ben echt naar iets opzoek dat on-the-fly een .mdb bestand aanmaakt..

Ik begin nu zelfs te twijfelen of dit wel mogelijk is..

Iemand enig idee?

Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
wil je echt een mdb bestand aanmaken of wil je alleen een query uitvoeren op een bestaande mdb?

Voor het 2e kan je gewoon een odbc koppeling opzetten. PHP heeft gewoon odbc ondersteuning afaik

Acties:
  • 0 Henk 'm!

  • Kalentum
  • Registratie: Juni 2004
  • Nu online
Dit is mogelijk. PHP kan met COM en .NET objecten overweg. Dus alles wat in Windows kan kun je ook met PHP aansturen. Wat wil je precies?

Acties:
  • 0 Henk 'm!

  • bartosiej
  • Registratie: Juli 2005
  • Laatst online: 18-09 16:17
Wat ik wil is dat PHP een nieuw MDB bestand aanmaakt op basis van een query die ik doorgeef..

Dus stel je voor dat ik de volgende query heb:
SELECT * FROM bestellingen WHERE verzonden='0'

Dan wil ik dat PHP een MDB bestand aanmaakt met het precieze resultaat wat je anders ook in phpmyadmin te zien krijgt, dus met de tableheaders & de records voor die specifieke query..

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Het aanmaken van een MDB is AFAIK niet mogelijk, of verrekkes lastig. Misschien dat je via wat omwegen de mdb kunt aanleggen (met wat exec-zaken ofzo wellicht) maar vanuit php zelf is het volgens mij niet mogelijk.

[ Voor 3% gewijzigd door RobIII op 17-02-2009 22:47 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Wat wil je precies met die 1 tabel mdb bestanden doen?

Want als ik die query zo zie dan gok ik dat het gewoon een rapportage is. Die zou ik persoonlijk liever in een pdf stoppen ( vele componenten voor php ) of in een xls bestand ( pear heeft daar een component voor om native xls bestanden aan te maken ).

Ik zie het nut persoonlijk niet zo in van relationele "database" ( het blijft access ) bestanden met daarin 1 tabel...

Andere mogelijkheid is misschien om de mysql=odbc te installeren en dan vanuit access de query te runnen op je mysql db. ( als het om gebruikers die ervaren in access zijn gaat )

Oftewel vertel eens iets meer over wat je wilt bereiken want ik denk dat je even op een verkeerd spoor zit te denken.

Acties:
  • 0 Henk 'm!

  • MacWebber
  • Registratie: September 2000
  • Niet online
Als je perse wilt eindigen met een MDB met daarin een tabel, zou je ook nog kunnen overwegen om de boel vanuit Access te regelen. Iets in de trend van een macro die (via ODBC) de MySQL tabel uitleest.

Het starten van die macro zou je met wat moeite zelfs nog kunnen initieren vanuit PHP.

Overigens vraag ik me met Gomez12 af of je het probleem niet aan de verkeerde kant aan het oplossen bent...

Acties:
  • 0 Henk 'm!

  • bartosiej
  • Registratie: Juli 2005
  • Laatst online: 18-09 16:17
Gomez12 schreef op dinsdag 17 februari 2009 @ 23:34:
Wat wil je precies met die 1 tabel mdb bestanden doen?

Want als ik die query zo zie dan gok ik dat het gewoon een rapportage is. Die zou ik persoonlijk liever in een pdf stoppen ( vele componenten voor php ) of in een xls bestand ( pear heeft daar een component voor om native xls bestanden aan te maken ).

Ik zie het nut persoonlijk niet zo in van relationele "database" ( het blijft access ) bestanden met daarin 1 tabel...

Andere mogelijkheid is misschien om de mysql=odbc te installeren en dan vanuit access de query te runnen op je mysql db. ( als het om gebruikers die ervaren in access zijn gaat )

Oftewel vertel eens iets meer over wat je wilt bereiken want ik denk dat je even op een verkeerd spoor zit te denken.
Het gaat inderdaad gewoon om een soort van raportage waarin duidelijk wordt weergegeven welke DVDs nog moeten worden afgeleverd..

Via Access was ook niet mijn idee maar het is een opdracht voor een klant en ze schijnen bij dat bedrijf meerdere dingen via Access te regelen..

Ik zal de klant echter mededelen dat het lastig zal worden via Access en dat het via Excel of PDF zal moeten..

Acties:
  • 0 Henk 'm!

  • Kalentum
  • Registratie: Juni 2004
  • Nu online
RobIII schreef op dinsdag 17 februari 2009 @ 22:47:
Het aanmaken van een MDB is AFAIK niet mogelijk, of verrekkes lastig. Misschien dat je via wat omwegen de mdb kunt aanleggen (met wat exec-zaken ofzo wellicht) maar vanuit php zelf is het volgens mij niet mogelijk.
Dat valt dus wel mee:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
// Use DAO 
$ac = new Com("DAO.DBEngine.36");
try {
    $db = $ac->OpenDatabase('c:\test2.mdb');
}
catch (Exception $e) {
    $db = $ac->CreateDatabase('c:\test2.mdb',';LANGID=0x0413;CP=1252;COUNTRY=0');
}
$table = $db->CreateTableDef('namen');
$table->Fields->Append($table->CreateField('naam', 10,50));
$db->TableDefs->append($table);
$db->close();


Maar ja werkt alleen op Windows. Voor het doel waar TS het voor gebruikt lijkt me een normale rapportage in Excel prima.

[ Voor 7% gewijzigd door Kalentum op 18-02-2009 09:10 ]


Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
rutgerw schreef op woensdag 18 februari 2009 @ 09:09:
[...]


Dat valt dus wel mee:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
// Use DAO 
$ac = new Com("DAO.DBEngine.36");
try {
    $db = $ac->OpenDatabase('c:\test2.mdb');
}
catch (Exception $e) {
    $db = $ac->CreateDatabase('c:\test2.mdb',';LANGID=0x0413;CP=1252;COUNTRY=0');
}
$table = $db->CreateTableDef('namen');
$table->Fields->Append($table->CreateField('naam', 10,50));
$db->TableDefs->append($table);
$db->close();


Maar ja werkt alleen op Windows. Voor het doel waar TS het voor gebruikt lijkt me een normale rapportage in Excel prima.
Tsja, blijf ik alleen met de vraag zitten hoeveel servers ( TS'en uitgezonderd ) jij kent waarop access / office geinstalleerd staan.
Op een Workstation werken dit soort dingen nog enigszins, maar als je over server gaat praten ga je opeens zoveel extra afhankelijkheden creeeren dat ik me afvraag of je dit echt wel wilt...

Acties:
  • 0 Henk 'm!

  • Kalentum
  • Registratie: Juni 2004
  • Nu online
Gomez12 schreef op woensdag 18 februari 2009 @ 12:57:
[...]

Tsja, blijf ik alleen met de vraag zitten hoeveel servers ( TS'en uitgezonderd ) jij kent waarop access / office geinstalleerd staan.
Op een Workstation werken dit soort dingen nog enigszins, maar als je over server gaat praten ga je opeens zoveel extra afhankelijkheden creeeren dat ik me afvraag of je dit echt wel wilt...
Op de enige Windows server waar ik toegang tot heb (= een server van een web hoster) werkt het. Aangezien het onderdeel is van allerlei Microsoft database meuk zou het ook zomaar eens mee kunnen komen met Windows zelf of met SQL Server ofzo. Dus office lijkt mij niet nodig.

Acties:
  • 0 Henk 'm!

  • blaatkipje
  • Registratie: Maart 2007
  • Laatst online: 17-09 07:51
Deze oplossing verdient niet de schoonheidsprijs, maar kan je niet een leeg .mdb bestand op je webserver zetten en deze kopiëren en vervolgens vullen.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
rutgerw schreef op woensdag 18 februari 2009 @ 14:41:
[...]


Op de enige Windows server waar ik toegang tot heb (= een server van een web hoster) werkt het. Aangezien het onderdeel is van allerlei Microsoft database meuk zou het ook zomaar eens mee kunnen komen met Windows zelf of met SQL Server ofzo. Dus office lijkt mij niet nodig.
Waarschijnlijk is het onderdeel van de MDAC drivers.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1