/ Forside/ Teknologi / Udvikling / ASP / Spørgsmål
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Komma separeret fil
Fra : NinaBina
Vist : 889 gange
50 point
Dato : 03-03-03 16:14

Hej,
Jeg har en komma separeret fil med en masse oplysnigner...
Den skal jeg hente ind i databasen...
er der nogen der har nogen idéer til hvordan jeg gør...???
evt. eksempler på sourcekode??



 
 
Kommentar
Fra : smorch


Dato : 03-03-03 16:23

Ligger den k.sep. fil på en server ?
Hvordan ser den ud ?

Mvh

sMorch

Kommentar
Fra : NinaBina


Dato : 03-03-03 21:57

Den kan godt ligge på serveren...
hvordan den ser ud...? den har en hel del attributter som skal ind i databasen...
og i databasen er der de samme attributter...
det er filen som ska erstattes med gamle data i databasen...

Kommentar
Fra : smorch


Dato : 03-03-03 23:12

Så bliver jeg nødt til at se den.

Send den til mig.

Mvh

sMorch
http://www.morch.dk/indexlm.html

Kommentar
Fra : NinaBina


Dato : 04-03-03 10:38

Jeg har endnu ikke fået filen... jeg får den i løbet af ugen.
den er komma separeret og den indeholder en masse person oplysninger.
Den kommer fra et administrations system.

Kommentar
Fra : smorch


Dato : 04-03-03 11:03

For at kunne lægge den ind i databasen, skal den kommaseparerede fil splittes ad hvor kommaerne er, og der skal laves en definition på hvilke ting der lægges ind i hvilke kolonner, og der må også være en definition på hvor hver enkelt post "stopper".

Hvis filen ser sådan ud:

navn,adresse,postnr,bynavn,persnr,livret;navn2,adresse2,postnr2,bynavn2,persnr2,livret2;

etc, vil man instruere scriptet om at lave to opdelinger : den første ved semikolon (thi så har man een post), og den anden ved kommaerne, og så derfra tage hver værdi mellem to kommaer og lægge dem ind i databasen i den der til passende kollonne, og derpå gå til næste post.

Når du har fået filen, kan du evt. sende mig kollonnenavnene i databasen og beskrive hvordan den k.sep. fil ser ud - jeg behøver ikke dataene.

Hvis det er en engangsforteelse kan du fx. i en access database importere data, enten til en eksisterende tabel du har oprettet på forhånd, eller en ny tabel, som vil blive oprettet af guiden.

Tryk på Filer > Hent eksterne data > Importér . Vælg filtype forneden (er det en .txt fil finder du den type i bunden) og der vil så starte en guide der hjælper dig igennem importen.

Mvh

sMorch



Kommentar
Fra : NinaBina


Dato : 04-03-03 11:53

Hver post stopper ved ny linie. det er samme kolonnenavne i databasen.
Filen ser sådan ud: fornavn,efternavn,adresselinie1,adresselinie2,postnummer,by,klasse
der er kommaer i adresserne, er det derfor smartest at opdele filen med semikolon??
har du foreslag på et script?
Kan man lave en web grænseflade for at opdatere databasen istedet for at importere i access, den skal nemlig opdateres mere end en gang.

Mvh.
NinaBina


Accepteret svar
Fra : smorch

Modtaget 50 point
Dato : 04-03-03 12:52

Dette script sætter alle dine poster ind i databasen. Det er lavet til en access database på din server - den skal ligge sammen med din kommaseparerede fil og adovbs.asp (vistnok bedst kendt som adovbs.inc , men du kan bare ændre efternavnet .inc til .asp). Der SKAL være skriverettigheder i mappen.

<!--#include file="adovbs.asp"-->
<%
strDSN = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("database.mdb") 'til en access database
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open strDSN
%>
<%
   Set fso = CreateObject("Scripting.FileSystemObject")
   filespec = Server.Mappath("kommasepareretfil.txt") 'HUSK at ændre navnet til DIN fil
   Set f = fso.OpenTextFile(filespec,1)
   Do until f.AtEndOfStream
      linie=f.ReadLine
      poster=split(linie,",")
       Set admind = Server.CreateObject("ADODB.Recordset")
         Set admind = Server.CreateObject("ADODB.Recordset")
         strSQL = "SELECT * from TABELNAVN;"
         admind.Open strsql, MyConn, adOpenStatic, adLockOptimistic
         admind.AddNew
         admind("fornavn") = poster(0)
         admind("efternavn") = poster(1)
         admind("adresselinie1") = poster(2)
         admind("adresselinie2") = poster(3)
         admind("postnr") = poster(4)
         admind("by") = poster(5)
         admind("klasse") = poster(6)
         admind.Update
         admind.close
   Loop
   f.Close
%>


Filen adovbs.asp kan du finde på nettet - HUSK at ændre database.mdb til navnet på din database og TABELNAVN til din tabel's navn


Jeg håber det virker.

mvh

sMorch

Kommentar
Fra : NinaBina


Dato : 04-03-03 13:57

Det virker fint
Tak ska du ha

Godkendelse af svar
Fra : NinaBina


Dato : 04-03-03 13:58

Tak for svaret                

Kommentar
Fra : smorch


Dato : 04-03-03 14:52

Sææææl tak

Kommentar
Fra : smorch


Dato : 05-03-03 07:20

Der er lige en hage ved scriptet: Det virker fint første gang og sætter alle poster ind, men hvis du senere vil opdatere din database med en tilsvarende liste, tilføjerer det bare alle posterne een gang til. med det resultat at ale dem der var der i forvejen kommer til at stå i databasen en gang mere, hvilket jo er stik imod databasens princip. Jeg vil derfor foreslå, at du for et punkt mere i din komma.sep fil med en action :

fornavn,efternavn,adresselinie1,adresselinie2,postnummer,by,klasse,insert/update/delete (kun en af delene OG det skal være med små bogstaver) og retter scriptet til således:

<!--#include file="adovbs.asp"-->
<%
strDSN = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("database.mdb") 'til en access database
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open strDSN
%>
<%
Set fso = CreateObject("Scripting.FileSystemObject")
filespec = Server.Mappath("kommasepareretfil.txt") 'HUSK at ændre navnet til DIN fil
Set f = fso.OpenTextFile(filespec,1)
Do until f.AtEndOfStream
linie=f.ReadLine
poster=split(linie,",")
      if poster(7)="delete" then
       Set admind = Server.CreateObject("ADODB.Recordset")
       SqlStr = "DELETE FROM TABELNAVN WHERE fornavn='"&poster(0)&"' and efternavn='"&poster(1)&"';"
       MyConn.Execute (SqlStr)
       Set admind = Nothing
      else
             If poster(7)="update" then
            strSQL = "SELECT * from TABELNAVN where fornavn='"&poster(0)&"' and efternavn='"&poster(1)&"';"
            else
            strSQL = "SELECT * from TABELNAVN;"
            end if
Set admind = Server.CreateObject("ADODB.Recordset")
Set admind = Server.CreateObject("ADODB.Recordset")
admind.Open strsql, MyConn, adOpenStatic, adLockOptimistic
             If poster(7)="INSERT" then
               admind.AddNew
             end if
admind("fornavn") = poster(0)
admind("efternavn") = poster(1)
admind("adresselinie1") = poster(2)
admind("adresselinie2") = poster(3)
admind("postnr") = poster(4)
admind("by") = poster(5)
admind("klasse") = poster(6)
admind.Update
admind.close
      end if
Loop
f.Close
%>


På denne måde vil du kune vedligeholde din database ved hjælp af tekstfilen, og de poster der evt. skal slettes ender med delete, de der skl opdateres på update og de nye indsættelser ender på insert. Du kan evt. gemme denn fil med et andet navn end den første fx. vedligehold.asp

Mvh

sMorch

Du har følgende muligheder
Eftersom du ikke er logget ind i systemet, kan du ikke skrive et indlæg til dette spørgsmål.

Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste