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"
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?
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?
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.
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.
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?
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
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.