Avatar billede saxe_bratlie Nybegynder
22. marts 2006 - 11:10 Der er 9 kommentarer og
1 løsning

Kombinere WEB og Access

Jeg har følgende problemstilling:

En kunde ønsker å ha en webside hvor folk kan fylle ut noen felter (ca 20 felter), for så og sende inn på server. Hvilket format dette sendes inn i vet jeg ikke enda, men det kan være XML eller noe liknende.

Han ønsker så at denne informasjonen skal lastes opp i hans Access database lokalt på hans maskin.

Et alternativ der det skjema som kunden fyller ut lagres som en MS Access database, så at kunen skal laste Access databasen opp på sin maskin for hver gang han skal ta ut rapporter er ikke aktuellt.

Slik jeg tenker der må man ha et script som automatisk ( hvert 5 minutt eller noe) laster opp informasjonen fra nett, inn i Access applikasjonen.

Noen som har erfaring på dette fra før, og kan komme med gode råd??

/ Bratlie
Avatar billede ffsoft Praktikant
22. marts 2006 - 11:16 #1
Når kunden har indtastet og submittet kan der dannes en
fil og det kan være .CSV eller XML, som så sendes med mail
fra websiden. Alt dette er automatisk.
Kunden skal så gemme filen et sted på PC og indlæse den i
Acces, dette kan også automatiseres afhængig af hvad det er
for en mailklient og hvad det er for et operativ system på
PCen.
Avatar billede saxe_bratlie Nybegynder
22. marts 2006 - 11:45 #2
Ja. dette kjenner jeg til i grunn. Nå tenkte jeg mest at man lagde en liten applikasjon (eller om noe slikt finnes fra før) som koblet seg på serveren, og lastet nye innsendte skjemaer automatisk opp, uten å gå via mailklienten. Man kunnen eventuellt koblet seg på serverområde via FTP eller liknende.

Jeg er også klar over at det beste er å unngå MS Access, og lage hele systemet onlinebasert i PHP / MYSQL, men min kunde liker MS Access, og da er det også enkelt for meg å utbedre dette, da jeg kjenner Access godt.

/ Bratlie
Avatar billede jesperfjoelner Nybegynder
23. marts 2006 - 16:09 #3
Bratlie > Jeg har lavet noget før, som du måske kan bruge et par idéer fra.

Måske kunne du lave en process som løber i disse trin:

1. Indhent information fra din lokale Acessdatabase
2. Skriv det til en tekstfil
3. upload tekstfilen til webstedet med ftp


Information kan du hente fra tabeller, forespørgsler eller hvad du vil.
Du kan læse en tekstfil således:

    Dim intFileNo As Integer
    Dim strLine As String

    intFileNo = FreeFile()
    Open "C:\My Path\MyFile.txt" For Input As #intFileNo

    ' Read and print all lines to the Immediate Window.
    Do While Not EOF(intFileNo)
        Line Input #intFileNo, strLine
        Debug.Print strLine
    Loop

    Close #intFileNo



Og du kan skrive en fil således:

Function WriteTextFile(Content As String, Filename As String, PlaceInFolder As String) As String
'Skriver tekstfil med indhold og returnerer filens fulde sti og placering
Dim iFreefile As Integer
iFreefile = FreeFile
Open Replace(PlaceInFolder & "\" & Filename, "\\", "\") For Output As iFreefile
Print #iFreefile, Content
Close #iFreefile
err_:
    Debug.Print "Fejl i ''WriteTextFile''"
    Close #iFreefile
End Function


Og du kan sende filen via FTP til dit websted.
Du kan læse om FTP via Access og hente en demodatabase her:
http://www.databasejournal.com/features/msaccess/article.php/3513061

Princippet er af alle har en fil "ftp.exe" på deres maskine, da den er en del af windows. "ftp.exe" kan scriptes til at downloade, uploade m.m. på webstedet.

Noget i stil med dette laver et uploadscript:

Function CreateUploadScript()
Dim s As String
s = s & "open ftp.ditwebsted.dk" & vbCrLf
s = s & "ditbrugernavn" & vbCrLf
s = s & "ditpassword" & vbCrLf
s = s & "cd dinwebmappe" & vbCrLf
s = s & "binary" & vbCrLf
s = s & "lcd dinLokaleMappe" & vbCrLf
s = s & "put dinfilsnavn" & vbCrLf
s = s & "bye"
WriteTextFile s,"mitftpscript.txt","c:\"
End function


Og denne executer scriptet og uploader filen:


Function RunFTPscript(PathToFtpScript As String, Optional Wait As Boolean, Optional Hide As Boolean) As String
Dim sExe As String
sExe = Environ$("COMSPEC")
sExe = Left$(sExe, Len(sExe) - Len(Dir(sExe)))
sExe = sExe & "ftp.exe -s:" & PathToFtpScript
Debug.Print "RunFTPscript: " & PathToFtpScript
'Shell sExe, vbHide
If Wait = True Then
    If Hide = True Then
        ShellWait sExe, vbHide      'use this one to hide the windows
    Else
        ShellWait sExe
    End If
Else
    If Hide = True Then
        Shell sExe, vbHide      'use this one to hide the windows
    Else
        Shell sExe
    End If
End If
End function


Jeg har før brugt ovenstående, men ellers må du selv lige teste detaljerne i det.
Avatar billede jesperfjoelner Nybegynder
23. marts 2006 - 16:10 #4
Du skal også inkludere denne i din database, da ovenstående bruger "shell and wait" funktionen.

http://www.mvps.org/access/api/api0004.htm
Avatar billede saxe_bratlie Nybegynder
23. marts 2006 - 16:14 #5
Hei...!!

Dette er et bra svar, men det er omvendt / motsatt av hva du beskriver. Jeg ønsker å hente informasjon fra WEB, og inn i min Access applikasjon.

Denne laster ( etter som jeg forstår uten at jeg kan VBA noe serlig) opp informasjon fra Access, og opp på WEB. Altså jeg ønsker motsatt av dette. Kunden fyller ut et skjema på WEB, så for at denne informasjonen skal lastes inn i MS Access.

/ Bratlie
Avatar billede jesperfjoelner Nybegynder
23. marts 2006 - 16:33 #6
Det skema du udfylder på web, hvor lander det på webserveren? I en tekstfil eller i en database?
Du kan også hente en tekstfil med ftp og indlæse den i din accessdatabase.

Selve ftp-metoden er ikke så sikkert som hvis man bruger en webservice, men det er jeg ikke rigtig inde i.
Avatar billede saxe_bratlie Nybegynder
23. marts 2006 - 16:54 #7
Ja, det kan være en textfil, eller et hva som helst format, bare man på en eller annen måte kan lese det inn i access, uten og måtte foreta noen manuelle oppgaver, som importering fra Access filmenyen, osv. Man må selvsagt importere det nyeste innholde fra WEB serveren inn i MS Access, men dette gjøres automatisk av MS Access feks hver gang starter Access, eller liknende.

Så blir følgende:

1. Kunde fyller ut et skjema på WEB
2. Trykker på send
....
3. Min klient starter MS Access applikasjon
4. MS Access laster automatisk opp siste endringer på WEB
5. Min klient får oppdaterte tabeller i sin Access appliksjon

Slik ser jeg for meg at prosessen skal gå. Jeg forestiller meg at dette er nokså enkelt og få til i grunn, men ejg har ikke gjort det før, så da må jeg begynne på nytt...:-)

/ Bratlie
Avatar billede jesperfjoelner Nybegynder
23. marts 2006 - 17:05 #8
Hvis det er helt nyt for dig og du ikke har arbejdet med VBA bliver det svært at gøre dtet fuldautomatisk. Det kan godt gøres, men der er en del trin i det.

2. Når din klient trykket på SEND skal der gemmes en fil på WEB. Jeg går ud fra at du altid ved hvad den hedder? Har filen altid samme format eller indeholder den altid samme type data?

Du kan downloade filen med ftp til en folder på din disk. Men Access "ved" ikke hvor langt FTP.exe er kommet med download, så hvis du skal bruge denne metode skal du "tjekke" om filen er korrekt downloaded. Det kan gøres med filstørrelse eller andet. Hvis man vil have mere kontrol skal du måske bruge noget i stil med:
http://www.mvps.org/access/modules/mdl0037.htm

Når filen er downloadet og på plads skal den importeres i databasen. Dette kan gøres med Docmd.Transfertext  kommandoen, hvis den har sammet struktur hver gang. Hvis der er problemer med filen, hvis den har en speciel struktur eller andet kan det være nødvendigt at kode sig til det. I så fald kan du åbne filen, som vist i mit første indlæg > løbe igennem filen > indsætte i din databasen.

Alt dette vil tage noget tid at sætte op tror jeg, men skulle kunne lade sig gøre.
Der vil også være en del fejlmuligheder, som du skal tage højde for: manglende internetforbindelse, afbrudte downloads, korrupte downloadede tekstfiler m.m.
Avatar billede saxe_bratlie Nybegynder
23. marts 2006 - 17:12 #9
Jeg har en koder som kan VBA, men han kjenner ikke til Access, så derfor vil det være greit å ha en kode som en utgangspunkt, som inneholder elementer, så han ser hvordan MA Access VBS script fungerer (Den er noe forskjellig fra vanlig VBA)

Den filen som bli oppdatert på WEB vil alltid ha samme navn, plassering, osv. Den bare kontinuerlig oppdateres med nye data. Man kan også lage en ny fil for hver gang en kunde legger inn ny informasjon, og bruke "Date/time stamp" på filnavnet, slik at VBA Scriptet ikke laster opp dobbelt. En av løsningen vil fungere, men vil ta mer plass på WEB serveren.

Jeg skal be min koder å se på linken du sendte meg. Ettersom jeg ser der, er det det jeg er ute etter.

/ Bratlie
Avatar billede jesperfjoelner Nybegynder
23. marts 2006 - 17:22 #10
Det lyder fint. Hvis du har en som kan lidt VBA kan han hente demodatabasen. I den er kode både til upload og download og forklaringer og så er det bare få det tilpasset til jeres behov.
Tak for point.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester