Access Sharepoint und PHP

chrisko

Mitglied
Hallo,
eigentlich dachte ich, es wäre nur ein kleines Problem...

Kunde hat eine recht umfangreiche Datenbank, eine einzige kleine Tabelle daraus soll via browser akutalisiert werden können... bis hierhin alles kein Problem.

Von access aus via ODBC als SQL Tabelle online gestellt und alle Datenbank- und Formularmöglichkeiten via HTML/PHP etc. sind gegeben. Zudem kann die Tabelle in Access wieder verknüpft werden und alle Möglichkeiten der Berichte und Abfragen etc. sind möglich ... aber eben nur solange man online ist.

Jetzt tauchte das Problem auf, das diese Access Datenbank, inkl. der ODBC Tabelle auch offline bearbeitet werden soll und irgendwie auch muss.

Ja, eigentlich dachte ich hier jetzt, das wäre einfach...

Scheint aber, wie ich bisher in Erfahrung bringen konnte, nur mit dem Sharepoint Server etc. von Microsoft zu funktionieren.
Hat jemand von euch eventuell eine Idee womit das auch unter einem Apache, PHP, MySQL etc. laufen kann... also wirklich die zusammenarbeit mit access 2007 und den Sharepointlisten...

Ich will doch nur eine einzige kleine Tabelle damit abgleichen und online wie auch offline arbeiten können, das ganze ohne Microsoft Server und Sharepointserver aber mit Access...


Danke für eventuelle Ideen...

Christian
 
Bin nicht sicher ob ich das Problem verstanden hab. Sehe ich das richtig: die MDB liegt auf einem Webserver irgendwo auf einem gehosteten Webspace/Webserver, die online-Datenbearbeitung über PHP und ODBC funktioniert?

Wenn das so ist, was meinst Du dann mit Offline-Bearbeitung? Wenn Du damit "MDB in Access öffnen und bearbeiten wie gewohnt" meinst, dann muss die MDB dazu irgendwie übers Dateisystem erreichbar sein. Üblicherweise auf der lokalen Festplatte oder zumindest im lokalen Netzwerk. Übers Internet macht das nicht viel Sinn und ist vor allem sehr gefährlich (weil die MDB dann im öffentlichen Zugriff ist).

Griessli
Irene
 
Wenn Du zwei verschiedene Varianten einer Datenbank hast (meinetwegen auch nur eine Datenbank mit der einen ausgelagerten Tabelle) und diese synchronisieren willst, dann läuft das üblicherweise unter dem Stichwort Replikation / Merge-Replikation (es gibt auch noch Snapshot- und andere Replikationstypen, die einfach bloß Kopien bereitstellen).

Das setzt ein replikationsfähiges Backend voraus. Ob das mySql kann, weiß ich nicht, vermute allerdings eher nicht, weil es zu mySql m.W.n. keine Offline-Backend-Version gibt.


Theoretisch geht das in Access, da gibt es so etwas. Das allerdings für Laien so einzurichten, daß es per Knopfdruck geht, dürfte ziemlich aufwendig sein. Außerdem dürfte das bloß auf einer Windows-Umgebung funktionieren, weil den Abgleich Access (als Programm) macht.


Sehr theoretisch geht das mit dem Microsoft Sql-Server als Backend und dem Microsoft Sql-Server CE (Compact Edition). Da kann man sich die Daten in eine dateibasierte CE-Datenbank pumpen, bräuchte ein Offline-Formular (mit .NET), das damit arbeitet (keine Ahnung, ob Access den Zugriff auf CE unterstützt) und kann die CE-Datenbank dann uploaden und wieder mit der eigentlichen Datenbank mergen. Aber das ist ziemlich aufwendig. Zwar theoretisch angedacht, ob ich server-daten mal so erweitere, weil das ein ziemlich großer Markt ist. Aber ob ich das mache, ist völlig unklar.
 
Hi,

der Kunde nutzt eine mit Access aufgebaute Datenbank, ist leider so...

Jetzt ist darin eine Tabelle enthalten, die einfach als ODBC Tabelle in der Access Datenbank wieder verknüpft ist.
Das funktioniert alles prima, halt nur solange, solange man online ist und die Verbindung zur Datenquelle steht.

Jetzt gibt es mit dem Sharepoint Kram von Microsoft die Möglichkeit, diese Tabelle eben auch offline bearbeiten zu können und wenn man wieder online geht synchronisieren sich die Tabellen automatisch, bzw. eben auf Knopfdruck.

Das soll so sein, weil der Kunde eben auch mit Notebook unterwegs ist und nicht immer online sein kann. Weil es sich hier eigentlich um eine Kleinigkeit handelt, soll hier kein IIS Server oder so etwas eingerichtet werden nur um dann noch dieses teure Sharepointkram darauf installieren zu können, dafür lohnt das alles nicht. Zumal auf den Servern überall Apache etc. läuft und ich damit bestens klar komme.

Ich bin als auf der Suche nach einer Alternative um trotzdem mit Access weiter arbeiten zu können ... ich weiß ... ist dämlich ... aber manche Wünsche sind einfach so:)

Ist vielleicht nicht gleich richtig beschrieben.

Christian
 
Das

QUOTE (chrisko @ Di 14.10.2008, 16:54)diese Tabelle eben auch offline bearbeiten zu können und wenn man wieder online geht synchronisieren sich die Tabellen automatisch, bzw. eben auf Knopfdruck.


erfordert ein Backend, das Merge-Replikationen unterstützt. Eine Nutzung wäre Sharepoint (kenne ich nicht näher), eine andere wäre eine Eigenentwicklung basierend auf dem MS-SqlServer oder Oracle. Sharepoint nutzt m.W. nach als Backend auch den MS-SqlServer.


QUOTE (chrisko @ Di 14.10.2008, 16:54)Weil es sich hier eigentlich um eine Kleinigkeit handelt, soll hier kein IIS Server oder so etwas eingerichtet werden nur um dann noch dieses teure Sharepointkram darauf installieren zu können, dafür lohnt das alles nicht. Zumal auf den Servern überall Apache etc. läuft und ich damit bestens klar komme.


Das ist keine Kleinigkeit, sondern weitaus komplexer als eine einfache Datenbank-Anwendung, derzeit nur in einer Kategorie für ziemlich große Firmen. Ich weiß noch nicht mal, ob mySql in der Enterprise-Version eine Replikation anbietet. Ein Offline-Backend dürfte es da erst recht nicht geben, das ist ja selbst bei Microsoft grade mal drei Jahre alt.

Wenn das einfach wäre, dann hätte ich das längst in server-daten eingebaut.



QUOTE (chrisko @ Di 14.10.2008, 16:54) ... ich weiß ... ist dämlich ... aber manche Wünsche sind einfach so


Der Kunde muß sich einfach von völlig unrealistischen Vorstellungen verabschieden - ist einfach so.
 
Mal ganz doof gefragt - warum nicht einfach eine Tabelle in der Frontend die, sobald man OnLine geht, mit der Backend abgeglichen wird?

Mag nicht die eleganteste Methode sein, das sind Access-DBs aber eh nicht. Also scheint da sowie so nicht der Fokus drauf zu liegen.
 
Hi,
@TSc
genau so stelle ich mir das vor...

@jAuer,
MSAccess macht das ja, genau diese eine Tabelle abgleichen. Man kann, solange man online ist, mit einer verknüpften Tabelle arbeiten, es können mit dieser Tabelle sogar mehrere arbeiten. Einziges Problem ist eben, wenn man offline geht, geht nix mehr.

Ich hatte dann auch dran gedacht, was solls, lädst du einfach die Tabelle, gehst offline und nachher im online Betrieb speicherst einfach wieder, bzw machst den Export auf ODBC.

Ja, war schön gedacht ... aber access sagt dann einfach: Tabelle existiert bereits und nix mit speichern. Ich kann dann zwar die Tabelle in MySQL einmal per Hand löschen und dann neu speichern, macht aber beim Kunden keinen Sinn, der kriegt das nicht hin, weil es eben nun in PHPMyAdmin geht.

Das Problem ist eben einfach, das der Kunde auf sein MS Access nicht verzichten will und kann, weil eben viele weitere Anwendungen darauf zugeschnitten sind.

Chrisko
 
Du machst dir einfach eine vom Aufbau zu der MySQL-Tabelle identischen Seite in die Frontend.
Wenn du online bist werden die Querys direkt auf der SQL-Tabelle ausgeführt, wenn nicht dann auf der Frontend-Tabelle.

Gehst du wieder online wird ein nettes Knöpfchen gedrückt das die Daten von der Frontend-Tabelle in die SQL-Tabelle kopiert.

Fertisch ist die Quick-and-dirty-Lösung.

 
QUOTE (chrisko @ Mi 15.10.2008, 08:38)MSAccess macht das ja, genau diese eine Tabelle abgleichen. Man kann, solange man online ist, mit einer verknüpften Tabelle arbeiten, es können mit dieser Tabelle sogar mehrere arbeiten. Einziges Problem ist eben, wenn man offline geht, geht nix mehr.


Ob über eine Webanwendung mehrere Personen auf eine Tabelle zugreifen (wie in jedem Forum) oder ob mehrere Personen über ihr jeweiliges lokales Access auf dieselbe online deponierte Tabelle zugreifen, ist relativ egal.

Es ist physikalisch eine Tabelle, auf die von verschiedenen Stellen (mehrere Threads des Webservers, mehrere Access-Anwendungen) zugegriffen wird. Und daß das nicht zu Problemen führt, erfordert eine 'gewöhnliche Sperrbehandlung', wie sie jedes Datenbank-Backend kann.

Ein 'Abgleichen' setzt immer zwei verschiedene Objekte voraus, zwischen denen abgeglichen wird.



QUOTE (TSc @ Mi 15.10.2008, 08:27)warum nicht einfach eine Tabelle in der Frontend die, sobald man OnLine geht, mit der Backend abgeglichen wird?


Das Problem fängt schon damit an, daß in der Online- und der Offline-Version Spalten hinzugefügt werden können, die dann verschiedene Inhalte, aber dieselbe Primärschlüssel-ID haben. Deshalb benötigt man bsp. immer eine uniqueidentifier-Spalte. Ebenso müssen Zeitstempel mitgeschleppt werden, über die dann ermittelt wird, welche Zeilen sich in welcher Version geändert haben. Schließlich benötigt man eine 'Konfliktlösungsstrategie', falls nach einem Abgleich dieselbe Zeile sowohl offline als auch online geändert wurde.

PS: Wenn die Tabelle nur entweder off- oder online bearbeitet wird, genügt natürlich ein Löschen und Rüberkopieren.
 
QUOTE (jAuer @ Mi 15.10.2008, 08:56) Das Problem fängt schon damit an, daß in der Online- und der Offline-Version Spalten hinzugefügt werden können, die dann verschiedene Inhalte, aber dieselbe Primärschlüssel-ID haben. Deshalb benötigt man bsp. immer eine uniqueidentifier-Spalte. Ebenso müssen Zeitstempel mitgeschleppt werden, über die dann ermittelt wird, welche Zeilen sich in welcher Version geändert haben. Schließlich benötigt man eine 'Konfliktlösungsstrategie', falls nach einem Abgleich dieselbe Zeile sowohl offline als auch online geändert wurde.

PS: Wenn die Tabelle nur entweder off- oder online bearbeitet wird, genügt natürlich ein Löschen und Rüberkopieren.

Die Primärschlüssel-Problematik sollte nicht auftreten, da für die master table beim kopieren der Daten ein neuer Primary key generiert wird und der aus der slave table verfällt.
Da es nur um eine Tabelle geht kann es zu dem Zeitpunkt noch keine Referenzen geben was den primary key des slave relativ unwichtig werden läst.

In der Tat braucht man ein Konflikthandling, was sich in Access aber recht einfach über ein Form lösen läst das dem User beim Abgleich beide Datensätze präsentiert und ihm die Entscheidung läst welcher verwendet werden soll.

Ginge halt schon, ist nur nicht wirklich schön.

Wie du schon sagst, am einfachsten wäre es, wenn nur der Entweder/Oder - Fall vorliegt.

 
Na, es wird doch komplizierter
dry.gif


Access bietet doch genau diese Möglichkeit an, ist doch alles direkt vorhanden mit dem Sharepoint Server.

Im grunde kann das also ganz einfach gelöst werden. IIS + sharepoint, die genauen Kosten allein für die software weiß ich jetzt nicht.

Allein der Techniker fängt schon an zu fluchen wenn ich ihm mit dem IIS zeugs komme, ich müsste also einen komplette Server aufsetzen und dann den ganzen Microsoftkram drauf installieren, das alles nur um eine Tabelle aktuell zu halten.

Gibt es denn nicht eine Möglichkeit wie weiter vorn schon mal angedacht, dieses Sharpoint auch unter Apache, MySQL, und PHP etc. zu installieren.

Bisher habe ich da nur was von Alfresco Labs gefunden...

Chrisko
 
Hi,
hab mir jetzt mal den Alfresco näher angeschaut und werde den testen. Mal sehen was dabei so rauskommt, wenn es so funktioniert wie beschrieben, könnte das eine sehr interessante Alternative zu dem Sharepoint Server von MS sein.

Hat eigentlich jemand damit schon Erfahrungen machen können?

Chrisko
 
Zurück
Oben