nearle
Goto Top

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

Content-Key: 141991

Url: https://administrator.de/contentid/141991

Printed on: April 19, 2024 at 20:04 o'clock

Member: bernie2909
bernie2909 May 03, 2010 at 13:37:04 (UTC)
Goto Top
Hi,

ich hab sowas mit VM Server, also ws auf vm ware laufen, und die Standorte verbinden sich via Remote desktop auf einer VM ws.

Vorteil, es werden nur Daten zum Anzeigen der Vm Übertragen, und Die rechne Leistzung bleibt im Hauptstandort. Das entlastet den Externen Netzverkehr.

Gruß

Bernie
Member: Edi.Pfisterer
Edi.Pfisterer May 03, 2010 at 13:46:22 (UTC)
Goto Top
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
Member: Nearle
Nearle May 03, 2010 at 13:56:26 (UTC)
Goto Top
@Bernie:
Meine externen Mitarbeiter sind aber nicht an einem bestimmten Standort, sondern z.B. via Lapotp im home office!
So müsste ich erst eine VPN Verbindung zu uns in die Fa. aufbauen und danach via Remote desktop zum jeweiligen Server und der dortigen DB. Sehr umständlich.

@urobe73:
Dieses Hilfe-Angebot nehme ich sehr gerne an. HTML Programmierkenntnisse habe ich zwar nicht viele, aber die Strukturen und einfache Bausteine kenne ich.
Wenn Du mir links finden könntest, wie so eine DB einfach via browser und ASP zu editieren ist, dann wäre ich Dir super dankbar.
Das hört sich wirklich nach ner guten Lösung an.
Member: Edi.Pfisterer
Edi.Pfisterer May 03, 2010 at 14:18:21 (UTC)
Goto Top
Hallo!
Ich muss jetzt Heim (oder will face-wink ), 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
Member: Edi.Pfisterer
Edi.Pfisterer May 04, 2010 at 06:31:49 (UTC)
Goto Top
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 face-wink
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

%>
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:
<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 gebenface-smile meld dich!
Member: Nearle
Nearle May 04, 2010 at 06:51:43 (UTC)
Goto Top
Ich mach mich voller Begeisterung ans Werk und schau wie weit ich klar komm. DANKE soweit...Fragen werden sicherlich kommen.
Member: Edi.Pfisterer
Edi.Pfisterer May 11, 2010 at 07:08:50 (UTC)
Goto Top
Hallo!
Wie stehen die Dinge? Konntest Du erste Erfolge erzielen? Bei Bedarf könnte ich Dir auch je eine Seite für
löschen/ändern/eintragen in die DB posten.

lg
Edi