Avatar billede logiq Nybegynder
10. oktober 2002 - 09:52 Der er 5 kommentarer og
1 løsning

Import til database

Jeg har en ASP webshop som er baseret på en access database. Jeg har lavet et asp-script som jeg bruger til at eksportere alle varedata til det format mit økonomistyring forstår (Hansa Office 2). (dvs. en masse fyld-tekst og semikoloner der skal tilføjes, og formateres på den helt rigtige måde)

Mit spørgsmål er så hvordan går jeg den anden vej?

Hvordan laver jeg et script der sorterer semikoloner og fyldtekst fra i .TXT fil, og hvordan skriver jeg til en bestemt tabel i en access database. Hvordan undgår jeg iøvrigt dubletter, hvordan sørger jeg for at hvis kun prisen er ændret at kun denne bliver opdateret.
Avatar billede medions Nybegynder
10. oktober 2002 - 10:00 #1
Ok, du henter først og fremmes til .txt fil... Det gør du med FSO - File System Object:

<%
Dim fso, f, filespec
Set fso = CreateObject("Scripting.FileSystemObject")
filespec = Server.Mappath("/tekstfil.txt")
Set f = fso.OpenTextFile(filespec,1)
' Læs linie for linie indtil slutningen af filen
Do While not f.AtEndOfStream
  strSemikolinColl = strSemikolinColl & f.ReadLine
Loop
f.Close
%>

Her efter ligger du dem iet array ved at bruge Split() funktionen, ved at du splitter ved semikolon (;)

<%
  arrData = Split(strSemikolinColl,";")
%>

Her efter propper du alt data ind i databasen ved at køre det ignnem med en For...Next løkke ved du bruger UBound(), så du finder den sidste post i Arrayet.

<%
  Set objConn = Server.CreateObject("ADODB.Connection")
  objConn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("dbfil.mdb")

For i = 0 To UBound(arrData)
  strSQL = "INSERT INTO tabel (kolonne1) VALUES ('" & arrData(i) & "')"
  objConn.Execute(strSQL)
%>

Så skulle det gerne virke ;o)

//>Rune
Avatar billede logiq Nybegynder
14. oktober 2002 - 12:56 #2
Jeg er ikke den store ASP-haj, her er et udsnit af det som mit økonomistyring generer:

format;
1;44;1;

commentstring;
;

artikel3;
1;Forsendelse < 1 kg.;;;;;39,00;0;FRAGT;;;;;;0;;0;0;;;;;0,00;;;0;05/07/2002;;0;;1;0,00;0;;0;0;0;0,00;;;;0;0;0;;0;;;;;0;;;;;;05/07/2002;0,00;0;;;;;0;0;0,00;;;0;;;;;;;;
CDESC;cdescription;
CIMAG;cimageurl;
MFG;mfg (producent);
POTH1;pother1 (leverandør);
POTH3;pother3 (link til manual);
CATEG;category;
ALLOW;allowusertext;
POTH4;pother4 (driverlink);
POTH5;pother5 (link til producentens hjemmeside omkring produktet);
EXTIM;extendedimage;
EXTDE;extendeddesc;

Den fortsætter så bare sådan helt til filens afslutning.
Det første produkt starter ved "1;Forsendelse < 1 kg"..., som i øvrigt er én linie indtil lige før "CDESC;cdescription;" som starter på en ny.

De data jeg skal have plottet ind i databasen er:
1
Forsendelse < 1 kg.
39,00
FRAGT
05/07/2002
05/07/2002
cdescription
cimageurl
mfg (producent)
pother1 (leverandør)
pother3 (link til manual)
category
allowusertext
pother4 (driverlink)
pother5 (link til producentens hjemmeside omkring produktet)
extendedimage
extendeddesc

Kan du evt give mig et eksempel udfra det ovennævnte, hvordan koden skal se ud, så kan jeg nok bedre gennemskue det. Jeg er bedst til eksempler.

På fohånd tak!
Avatar billede logiq Nybegynder
14. oktober 2002 - 12:58 #3
Da det er en access-database, er det så muligt at definere et "import-fileter" af en slags direkte i access? Dette kan nemlig også være en mulighed.
Avatar billede medions Nybegynder
14. oktober 2002 - 23:28 #4
Er ked af at sige det men jeg har ikke tid lige for tiden...
Men jeg kan da lede dig en del på vej...

Du kan bruge funktionen Split() til at adskille ved et tegn. Split() funktionen ligger alle dataerne over i et Array, så de senere kan hives ud specefikt. Fx
strVariabel ="Hej;Med;Dig"
arrData = Split(strVariabel,";")
Response.Write(arrData(1))

-I dette tilfælde ville Med blive udskrevet!

------- Funktionerne Left(), Right() og Mid():
Disse funktioner bruger du til at hive specefik data ud af en streng. Fx.

strVariabel = "Hej med dig"
strForkort = Left(strVariabel,3)
Response.Write(strForkort)

-i dette tilfælde ville du få udskrevet Hej.

strVariabel = "Hej med dig"
strForkort = Right(strVariabel,3)
Response.Write(strForkort)

-i dette tilfælde ville du få udskrevet dig.

strVariabel = "Hej med dig"
strForkort = Mid(strVariabel,4,4)
Response.Write(strForkort)

-i dette tilfælde ville du få udskrevet med.

På denne måde kan du arbejde dig ind i strengen... - Det tager en del tid om at definere hvor i strengen den skal hente dataerne ud, og den tid har jeg desævre ikke lige for tiden... Beklager!

-Du kan læse meget mere om funktionerne på www.html.dk og på www.msdn.microsoft.com

//>Rune
Avatar billede logiq Nybegynder
15. oktober 2002 - 08:09 #5
Det er også helt fint Rune, tak for hjælpen!
Det første svar var bare ikke så gennemskueligt for mig, så det var derfor jeg bad om uddybning, og det fik jeg da.

Jeg giver mig i krig med det og læser lidt på de sites du anbefaler, og så må se hvordan det går.

Ellers må jeg jo bare stille flere spørgsmål herinde på eksperten indtil det lykkes.

Endnu engang tak for hjælpen.  Hej...
Avatar billede medions Nybegynder
15. oktober 2002 - 12:11 #6
Anytime :o)
Thx 4 Poinz

//>Rune
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
Kurser inden for grundlæggende programmering

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