webForumDet fria alternativet

Exportera till mdb

ASP

9 svar · 294 visningar · startad av fundrusse

Medlem sedan jan. 2002286 inlägg
Frågan#1

Jag har en sida där man skall kunna exportera information till en en textfil och till databas..
tänkte höra hur man skapar en *.mdb fil o loppar in värdena i en tabell vid namn ID och ett fält vid namn "Data"

Medlem sedan jan. 2002286 inlägg
#2

Okejj.. Har hittat denna kod

Dim objDatabase 
Set objDatabase = Server.CreateObject("ADOX.Catalog") 
objDatabase.Create "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.Mappath("\") & "databas.mdb" 
Set objDatabase = Nothing

Fråga är nu hur man gör så att den inte sparas på servern utan skickas till användaren direkt..
Eller man kanske måste spara den på severn, skicka den sen tabort den?

Medlem sedan juni 20022 599 inlägg
#3

Om du använder Adox så måste du nog låta Access-filen "mellanlanda" på disk innan du skickar den till klienten.

Medlem sedan jan. 2002286 inlägg
#4

Okejj.. Jag har gjort så att den "mellanlandar" nu..
Och det verkar ju funkar bra..
Fråga är ju bara vad som egentligen händer när jag tar bort filen.
Om koden stannar tills filen är skickad o sen tar bort filen.
För att den syns inte i mappen där den skall ligga..
Men jag kan ändå få filen överskickad. hehe..

Finns det nått smidigare sätt att lösa det på kanske?

Medlem sedan juni 20022 599 inlägg
#5

Finns det nått smidigare sätt att lösa det på kanske?

Det vet jag inte. Dels vet inte riktigt exakt vad du vill göra. Dels har jag aldrig gjort det själv.

Men man kan ju åtminstone spalta upp problemet lite:

1. Du måste fylla mdb-filen med tabellstruktur mha ADOX och sen måste du skyffla in data med ADO. Den koden du pastade skapar ju bara en tom fil. Ett alternativ är ju att ha färdiga filer (tomma mallar) som du bara kopierar och fyller med data. Om tabellstrukturen alltid är likadan så behöver du kanske inte använda ADOX varje gång?

2. Du måste föra över filen till klienten. Du kan antingen länka till filen eller streama den till klienten. Länka är enklast men ger problemet att du inte vet när du kan ta bort filen. Det borde vara bättre att streama ut den och sen ta bort den direkt.

3. Hur ska du hantera att flera surfar samtidigt? Om alla filer heter databas.mdb så kommer dom att ibland skriva över varandra och du skickar fel fil till fel person. Du måste alltså se till att filerna alltid har unika namn.

Som du ser så har du en del att tänka igenom innan du börjar koda.

Medlem sedan feb. 200112 078 inlägg
#6

Om databasen alltid ser likadan ut med bara innehåller olika data, så känns det lite onödigt att 'skapa' en ny databas varje gång. Då kanske det räcker med att ha en kopia som aldrig ändras på servern, som du sedan kopierar till en mapp istället för att skapa en ny.

Sessions-id (session.sessionId) kan vara en lösning på namnet till databaserna för att undvika strul med fler användare.

Medlem sedan juni 20022 599 inlägg
#7

OveRRidE skrev:

Om databasen alltid ser likadan ut med bara innehåller olika data, så känns det lite onödigt att 'skapa' en ny databas varje gång. Då kanske det räcker med att ha en kopia som aldrig ändras på servern, som du sedan kopierar till en mapp istället för att skapa en ny.

niko skrev:

Ett alternativ är ju att ha färdiga filer (tomma mallar) som du bara kopierar och fyller med data. Om tabellstrukturen alltid är likadan så behöver du kanske inte använda ADOX varje gång?

Ekar det här? :OO

Medlem sedan feb. 200112 078 inlägg
#8

Tydligen. ;)

Medlem sedan jan. 2002286 inlägg
#9

Ok det jag gör nu är att jag.
1. Skapar databasen (med Session.SessionID som namn)
2. Gör tabellerna o fälten
3. Fyller den med data
4. Streama ut den (för den skall inte kunna kommas åt från andra användare)
5. Tabort den

Medlem sedan juni 20022 599 inlägg
#10

Ja, jag tycker det låter vattentätt.

Med en liten reservation för punkt 1.

Finns det nåt sätt en användare kan generera mer än en rapport åt gången (i samma webläsarinstans)? Isåf kan du inte använda SessionID som unikt namn.

Tillåter du surfare som inte har Session-cookies enablat i sin webläsare? Dessa kommer att få ett nytt SessionID vid varje sidträff. Kan det ge problem?

Ett alternativ kan vara att använda den funktion som MS erbjuder just för att ge unika filnamn: GetTempName.

Exempel: http://www.computerbooksonline.com/tips/ASP6.asp#283

267 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)