Zugriff auf Access DB von extern?
Ich möchte externen Mitarbeitern den Zugriff auf unsere hausinterne Access-Datenbank ermöglichen, aber wie?
Hallo,
ich habe eine Access-Datenbank (200 MB) im Haus und möchte diese unseren Mitarbeitern extern (30 Leute) zugänglich machen. Diese sollen immer mal wieder drauf zugreifen und auch Daten eintragen können. Sicherlich werden diese höchstens 1-2 mal in der Woche für ein paar Minuten drauf zugreifen müssen.
Problem 1: Die Mitarbeiter haben auf ihren Rechnern kein Access
Problem 2: Die Datenbank muß physisch in unserer Firma bleiben.
Wie würdet ihr das lösen?
Problem mit Access-DB sind bei dieser Größe ja, dass alle Daten übertragen werden müssen.
Ich hätte hier die technischen Voraussetzungen um den Leuten einen VPN-Tunnel einzurichten, danach müssten sie per remote auf die jeweilige Maschine mit Access und der Datenbank, aber das is alles umständlich und nicht sauber. Oder per Teamviewer auf eine Kiste im Betrieb schalten lassen? Dann wären die Mitarbeiter relativ einfach auf der jeweiligen Kiste, aber es geht halt immer nur eine Leitung und die Lizenzierung wäre teuer.
Ich danke Euch für Ratschläge
Hallo,
ich habe eine Access-Datenbank (200 MB) im Haus und möchte diese unseren Mitarbeitern extern (30 Leute) zugänglich machen. Diese sollen immer mal wieder drauf zugreifen und auch Daten eintragen können. Sicherlich werden diese höchstens 1-2 mal in der Woche für ein paar Minuten drauf zugreifen müssen.
Problem 1: Die Mitarbeiter haben auf ihren Rechnern kein Access
Problem 2: Die Datenbank muß physisch in unserer Firma bleiben.
Wie würdet ihr das lösen?
Problem mit Access-DB sind bei dieser Größe ja, dass alle Daten übertragen werden müssen.
Ich hätte hier die technischen Voraussetzungen um den Leuten einen VPN-Tunnel einzurichten, danach müssten sie per remote auf die jeweilige Maschine mit Access und der Datenbank, aber das is alles umständlich und nicht sauber. Oder per Teamviewer auf eine Kiste im Betrieb schalten lassen? Dann wären die Mitarbeiter relativ einfach auf der jeweiligen Kiste, aber es geht halt immer nur eine Leitung und die Lizenzierung wäre teuer.
Ich danke Euch für Ratschläge
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 141991
Url: https://administrator.de/contentid/141991
Ausgedruckt am: 22.11.2024 um 17:11 Uhr
7 Kommentare
Neuester Kommentar
Hallo!
Die eleganteste Lösung ist vermutlich, ein paar ASP Seiten zu basteln, mit denen Du Deine User auf die DB per Browser zugreifen lässt...
Vorteile:
Du brauchst kein VPN, kein ACCESS, einen Browser hat jeder, etc...
Falls Du dabei Hilfe brauchst: Melde Dich wieder...
Ansonsten gibts im WWW eine Vielzahl von praktischen Anleitungen, wie so etwas leicht zu realisieren ist...
lg
Die eleganteste Lösung ist vermutlich, ein paar ASP Seiten zu basteln, mit denen Du Deine User auf die DB per Browser zugreifen lässt...
Vorteile:
Du brauchst kein VPN, kein ACCESS, einen Browser hat jeder, etc...
Falls Du dabei Hilfe brauchst: Melde Dich wieder...
Ansonsten gibts im WWW eine Vielzahl von praktischen Anleitungen, wie so etwas leicht zu realisieren ist...
lg
Hallo!
Ich muss jetzt Heim (oder will ), und Rom wurde ja auch nicht an einem Tag erbaut... aber das bekommen wir schon hin!
praktisch wäre, wenn Du hier die Struktur der DB inkl. Felddatentyp angeben könntest...
(oder halt per PM, falls Du irgendwelche Bedenken hast...)
alternativ könntest du ja die Feldnamen etwas "verfälschen" und es doch hier posten. Das hätte den Vorteil, das mehrer hier mitbasteln können, was die Zeit verkürzen würde, bis das Teil läuft...
lg
bis morgen
Edi
Ich muss jetzt Heim (oder will ), und Rom wurde ja auch nicht an einem Tag erbaut... aber das bekommen wir schon hin!
praktisch wäre, wenn Du hier die Struktur der DB inkl. Felddatentyp angeben könntest...
(oder halt per PM, falls Du irgendwelche Bedenken hast...)
alternativ könntest du ja die Feldnamen etwas "verfälschen" und es doch hier posten. Das hätte den Vorteil, das mehrer hier mitbasteln können, was die Zeit verkürzen würde, bis das Teil läuft...
lg
bis morgen
Edi
Hallo!
ungeachtet Deiner DB mal ein bissl was zum Einstimmen...
1.) Du brauchst einen funktionierenden IIS (Start/Systemsteuerung/Software/WindowsKomponenten hinzufügen). Achte darauf, dass Du die Verarbeitung von ASP - Seiten mitinstallierst (Anleitungen dazu gibts wie Sand am Meer im www)
1a) nach Installation des IIS sollte am Server unter http://localhost eine Seiter erscheinen...
2.) Alle ASP-Seiten solltest Du per default in C:\inetpub\wwwroot speichern (falls Du mit der IIS-Verwaltungskonsole zurecht kommst, kann das auch wo anders sein
3.) Die DB liegt idealierweise irgendwo am Server mit dem IIS, kann aber auch wo anders sein. in diesem Fall solltest Du das LW mit der DB halt (per skirpt im Autostart) mappen [Anm.: beim Reboot geht dieses mapping bis zum 1. login verloren, wodurch die DB vorübergehend übers www nicht erreichbar sein wird...]
4.) auf der DB muss der IUSR (das ist der user, der bei der IIS-Installation angelegt wird) Schreibrechte haben (NTFS Dateiberechtigungen)
5.) Folgender Beispielcode ermöglicht nun, dass deine User übers www auf aus der db lesen können und eine einfache Suche starten können.
Zur besseren Übersichtlichkeit habe ich dir 2 Dateien hergerichtet (beide sollten im wwwroot Verzeichnis stehen):
Folgenden Code hat eine meiner Schülerinnen erstellt, könnte sein, dass er nicht 100%ig sauber ist
aber: er funktioniert fix - einen besseren habe ich grad nicht für copy/paste gefunden (und meine eigenen sind als Einsteigerbeispiel leider wenig geeignet...)
1.) inc_db.asp
Erklärung:
durch obigen Code wird einfach nur eine Verbindung zur Datenbank myDB.mdb hergestellt. Falls die db im selben Verzeichnis wie die ASP Seiten liegt, ist Variante A denkbar, besser gefällt mir aber Variante B! (durhc die vorangestellten Hochkomma ist Variante A auskommentiert und wird daher nicht verarbeitet!)
Dein teil: einfach nur den Pfad ändern, fertig!
db_lesen.asp:
Kurzer Erkärung:
Include der DB-Konfig
Test, ob der USer auf auswählen geklickt hat (und damit in der DB suchen will)
Falls ja: SQL-Befehl fragt in der DB in der Tablle MEWA ab
(Anm: Du erhälst solche SQL-Befehle, in dem Du eine Abfrage in Access modulierst, und dann links oben in der Ansicht auf SQL klickst:
SQL-Befehl kopieren, fertig)
(Anm 2: da SQL als Platzhalter das Zeichen % mag, die User aber den * gewohnt sind, wird dieser vor der Abfrage ersetzt)
Überschriften der Tabelle
do while --> Inhalte der DB am Bildschirm ausgeben
next
Falls der User noch nicht auf auswählen geklickt hat, wird ihm die Suchmaske gezeigt
Dein Teil: die SQL Abfrage an Deine DB anpassen; ZEILE 42
die einzelnen Feldnamen ausbessern -- rs.fields("feldname") ZEILE 90 bis 100
gutes gelingen
lass Dir Zeit und schau dir in Ruhe den Code durch, bei Fragen (die wirds sicher geben meld dich!
ungeachtet Deiner DB mal ein bissl was zum Einstimmen...
1.) Du brauchst einen funktionierenden IIS (Start/Systemsteuerung/Software/WindowsKomponenten hinzufügen). Achte darauf, dass Du die Verarbeitung von ASP - Seiten mitinstallierst (Anleitungen dazu gibts wie Sand am Meer im www)
1a) nach Installation des IIS sollte am Server unter http://localhost eine Seiter erscheinen...
2.) Alle ASP-Seiten solltest Du per default in C:\inetpub\wwwroot speichern (falls Du mit der IIS-Verwaltungskonsole zurecht kommst, kann das auch wo anders sein
3.) Die DB liegt idealierweise irgendwo am Server mit dem IIS, kann aber auch wo anders sein. in diesem Fall solltest Du das LW mit der DB halt (per skirpt im Autostart) mappen [Anm.: beim Reboot geht dieses mapping bis zum 1. login verloren, wodurch die DB vorübergehend übers www nicht erreichbar sein wird...]
4.) auf der DB muss der IUSR (das ist der user, der bei der IIS-Installation angelegt wird) Schreibrechte haben (NTFS Dateiberechtigungen)
5.) Folgender Beispielcode ermöglicht nun, dass deine User übers www auf aus der db lesen können und eine einfache Suche starten können.
Zur besseren Übersichtlichkeit habe ich dir 2 Dateien hergerichtet (beide sollten im wwwroot Verzeichnis stehen):
Folgenden Code hat eine meiner Schülerinnen erstellt, könnte sein, dass er nicht 100%ig sauber ist
aber: er funktioniert fix - einen besseren habe ich grad nicht für copy/paste gefunden (und meine eigenen sind als Einsteigerbeispiel leider wenig geeignet...)
1.) inc_db.asp
<%
set conn=server.createobject("adodb.connection")
' DSNlose Verbindung zur Datenbank variante A:
' DSNtemp="DRIVER={Microsoft Access Driver (*.mdb)}; "
' DSNtemp=dsntemp & "DBQ=" & server.mappath("Mewa.mdb")
' DSNlose Verbindung zu einer MS Access Datenbank Variante B:
DSNtemp = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\webspace\test\myDB.mdb"
conn.Open DSNtemp
%>
durch obigen Code wird einfach nur eine Verbindung zur Datenbank myDB.mdb hergestellt. Falls die db im selben Verzeichnis wie die ASP Seiten liegt, ist Variante A denkbar, besser gefällt mir aber Variante B! (durhc die vorangestellten Hochkomma ist Variante A auskommentiert und wird daher nicht verarbeitet!)
Dein teil: einfach nur den Pfad ändern, fertig!
db_lesen.asp:
<html>
<head>
<title>Mewa</title>
<meta name="author" content="eva.mueller">
<meta name="generator" content="Ulli Meybohms HTML EDITOR">
<link rel="stylesheet" href="css/mewa.css" type="text/css">
<br>
<br>
<br>
<img src="pix/logo.gif" alt="" border="0"></center>
</head>
<body text="#000000" bgcolor="#000000" link="#000000" alink="#000000" vlink="#000000">
<center><font size="+3">Kunden bearbeiten</font><br><br>
<!-- #include file="inc_db.asp" -->
<% if len(request("suchfeld")) >= 1 then %>
<% dim suche
suche = request("suchfeld")
suche = replace(suche,"*","%")
if len(request("sort")) <= 2 then
sortierung = "order by Auftragsnummer"
else
sortierung = "ORDER BY "
sortierung1 = request("sort")
if request("steigung") = "absteigend" then
sortierung2 = " DESC"
else
sortierung2 = " ASC"
end if
sortierung = sortierung & sortierung1 & sortierung2
end if
%>
<%
sql = "SELECT * FROM Mewa WHERE (((Mewa.Auftragsnummer) Like '%" & suche & "%')) "& sortierung &""
set rs=conn.execute(sql)
%>
<% if rs.eof then %>
Ihre Suche brachte keine Ergebnisse
<% else %>
<% dim vorkommen
vorkommen=0
%>
<table>
<tr>
<td width=50px><b>Update</b></td>
<td align=center><b><a href="?suchfeld=<%=request("suchfeld") %>&sort=Auftragsnummer<% if sortierung2 = " ASC" then%>&steigung=absteigend<%end if %>">Auftrags- nummer</a></b></td>
<td align=center><b><a href="?suchfeld=<%=request("suchfeld") %>&sort=Kundennummer<% if sortierung2 = " ASC" then%>&steigung=aufsteigend<%end if %>">Kunden- nummer</a></b></td>
<td align=center><b><a href="?suchfeld=<%=request("suchfeld") %>&sort=Patchnummer<% if sortierung2 = " ASC" then%>&steigung=aufsteigend<%end if %>">Patch#</a></b></td>
<td align=center><b><a href="?suchfeld=<%=request("suchfeld") %>&sort=Kollektion<% if sortierung2 = " ASC" then%>&steigung=absteigend<%end if %>">Kollektion</a></b></td>
<td align=center><b><a href="?suchfeld=<%=request("suchfeld") %>&sort=Teile<% if sortierung2 = " ASC" then%>&steigung=aufsteigend<%end if %>">Teile</a></b></td>
<td align=center><b><a href="?suchfeld=<%=request("suchfeld") %>&sort=Anmerkungsfeld<% if sortierung2 = " ASC" then%>&steigung=aufsteigend<%end if %>">Anmerkungen</a></b></td>
<td align=center><b><a href="?suchfeld=<%=request("suchfeld") %>&sort=Embleme<% if sortierung2 = " ASC" then%>&steigung=aufsteigend<%end if %>">Embleme</a></b></td>
<td align=center><b><a href="?suchfeld=<%=request("suchfeld") %>&sort=Emblemenummer<% if sortierung2 = " ASC" then%>&steigung=absteigend<%end if %>">Embleme#</a></b></td>
<td align=center><b><a href="?suchfeld=<%=request("suchfeld") %>&sort=Namensschilder<% if sortierung2 = " ASC" then%>&steigung=absteigend<%end if %>">Namens- schilder</a></b></td>
<td align=center><b><a href="?suchfeld=<%=request("suchfeld") %>&sort=Lieferscheindruck<% if sortierung2 = " ASC" then%>&steigung=absteigend<%end if %>">Lieferschein- druck</a></b></td>
</tr>
<%
On Error Resume Next
rs.MoveFirst
do while Not rs.eof
%>
<% dim color
rest = vorkommen mod 2
if rest=1 then
color = "#FFFFFF"
else
color= "#DADADA"
end if
%>
<tr bgcolor=<%= color %>>
<td><a href="lager_bearbeiten2.asp?Auftragsnummer=<%= rs.fields("Auftragsnummer") %>"><img src="pix/update.gif" border="0" alt=""></a></td>
<td><%= server.htmlencode(rs.fields("Auftragsnummer").value)%></td>
<td><%= Server.HTMLEncode(rs.Fields("Kundennummer").Value)%></td>
<td><%= Server.HTMLEncode(rs.Fields("Patchnummer").Value)%></td>
<td><%= Server.HTMLEncode(rs.Fields("Kollektion").Value)%></td>
<td><%= Server.HTMLEncode(rs.Fields("Anzahl_der_Teile").Value)%></td>
<td><%= Server.HTMLEncode(rs.Fields("Anmerkungsfeld").Value)%></td>
<td><%= Server.HTMLEncode(rs.Fields("Embleme").Value)%></td>
<td><%= Server.HTMLEncode(rs.Fields("Emblemenummer").Value)%></td>
<td><%= Server.HTMLEncode(rs.Fields("Namensschilder").Value)%></td>
<td><%= Server.HTMLEncode(rs.Fields("Lieferscheindruck").Value)%></td>
</tr>
<% vorkommen = vorkommen+1 %>
<%
rs.MoveNext
loop%>
</table>
<br>
<div class="positionierung">
Ihre Suche brachte <%=vorkommen%> Ergebnisse!
</div>
<% end if %>
<%
rs.close
conn.close
SET conn = nothing
%>
<% else %>
<span class="error">
<% fehler = request("error")
if fehler = "1" then %>
Ihre Eingabe brachte keine Ergebnisse!
<% end if %>
<% if fehler = "3" then %>
Daten erfolgreich gelöscht!
<% end if %>
</span>
<br>
<form action="db_lesen.asp" method="post" target="">
Auftragsnummer: <input type="Text" name="suchfeld" value="" size="25" maxlength=""><br>
<br>
<input type="Submit" name="absenden" value="auswählen">
</form>
<br>
<br>
<br>
<br>
<a href="Lagerstart.asp">zurück</a><% end if %>
<br>
<br>
<div class=error>Last Update: <!--DATE-->06.05.2008<!--/DATE--></div>
</body>
</html>
Kurzer Erkärung:
Include der DB-Konfig
Test, ob der USer auf auswählen geklickt hat (und damit in der DB suchen will)
Falls ja: SQL-Befehl fragt in der DB in der Tablle MEWA ab
(Anm: Du erhälst solche SQL-Befehle, in dem Du eine Abfrage in Access modulierst, und dann links oben in der Ansicht auf SQL klickst:
SQL-Befehl kopieren, fertig)
(Anm 2: da SQL als Platzhalter das Zeichen % mag, die User aber den * gewohnt sind, wird dieser vor der Abfrage ersetzt)
Überschriften der Tabelle
do while --> Inhalte der DB am Bildschirm ausgeben
next
Falls der User noch nicht auf auswählen geklickt hat, wird ihm die Suchmaske gezeigt
Dein Teil: die SQL Abfrage an Deine DB anpassen; ZEILE 42
die einzelnen Feldnamen ausbessern -- rs.fields("feldname") ZEILE 90 bis 100
gutes gelingen
lass Dir Zeit und schau dir in Ruhe den Code durch, bei Fragen (die wirds sicher geben meld dich!