Avatar billede rebel_penguin Nybegynder
12. september 2004 - 23:33 Der er 7 kommentarer

Overfoerer OLE objekt (fil) fra en database til anden med SQL/ASP

Hej experts

Jeg har to stx. databaser (Access). I den ene findes en tabel, experts, med raekken, FileConsult1. FileConsult1 er et OLE objekt, indeholdende word/doks.

Jeg har nu en anden database, hvor jeg gerne vil flytte indholdet af FileConsult1 til, ud fra hver entitet i tabellen.

Har proevet med foelgende kode der desvaerre ikke vil virke ordentligt.

If RS_From("FileConsult1").Value <> "" Then
        objConnNew.Execute("INSERT INTO Files (ExpertID, FileName) VALUES ('" & RS_From("ExpertID") & "', '" & RS_From("FileNameConsult1") & "', '" & RS_From("FileConsult1") & "')")
    End if

Ovenstaende virker fint nok, hvis der ikke findes noget i FileConsult1, dvs. lige saa snart der findes noget i feltet, virker skidtet ikke, hvorfor ?

Har desuden provet med

Dim VarFileConsult2

    VarFileConsult1 = RS_From("FileConsult1")

    'If VarFileConsult1 <> "" Then
    '    'objConnNew.Execute("INSERT INTO Files (ExpertID, FileName) VALUES ('" & RS_From("ExpertID") & "', '" & RS_From("FileNameConsult1") & "', '" & RS_From("FileConsult1") & "')")
    '    Response.Write("...hit")
    'End if

Nogle der har svaret derude, mange tak paa forhaand.

mvh penguin rebel
Avatar billede eagleeye Praktikant
12. september 2004 - 23:39 #1
Prøv at bruge det sådan her:

rs_from("FileConsult1").GetChunk(1024000)


Så det bliver:

        objConnNew.Execute("INSERT INTO Files (ExpertID, FileName) VALUES ('" & RS_From("ExpertID") & "', '" & RS_From("FileNameConsult1") & "', '" & RS_From("FileConsult1").GetChunk(1024000) & "')")


men der mangler da også en kolonne til FileConseult1 i SQL sætningen, der er kun to kolonnennavne: INSERT INTO Files (ExpertID, FileName)
Avatar billede rebel_penguin Nybegynder
13. september 2004 - 10:33 #2
Hej Eagleeye

Forst mange tak for din hjaelp indtil videre.

Har dog stadig nogle problemer>

Problemet opstaar allerede idet jeg skal tjekke hvorvidt feltet FileConsult1 indeholder en vaerdi, hvortil jeg har brugt nedenstaaende saetning,

If rs_from("FileConsult1")<>"" Then
Response.Write("...billed")
End if

Dette virker fint nok, saaleange der ikke er en vaerdi i FileConsult1, lige saa snart der er det, crasher siden.

Har saa istedet provet med

If rs_from("FileConsult1").GetChunk(1024000)<>"" Then
Response.Write("...billed")
End if

Dette vil dog heller ikke virke, har du nogle ideer, HELP !!!!!

paa forhaand tak, mvh penguin
Avatar billede rebel_penguin Nybegynder
13. september 2004 - 11:23 #3
O ho

Har lige fundet ud af at man kan anvende


    If ISNull(rs_from("FileConsult2")) Then
        Response.Write("...null")
    Else
        Response.Write("...not null")
    End if

Nu mangler jeg bare at loese problemet med at indsaette...
Avatar billede rebel_penguin Nybegynder
13. september 2004 - 11:32 #4
hmm

If ISNull(rs_from("FileConsult2")) Then
Response.Write("...null")
Else
objConnNew.Execute("INSERT INTO Files (ExpertID, FileName, File) VALUES ('" & RS_From("ExpertID") & "', '" & RS_From("FileNameConsult2") & "', '" & RS_From("FileConsult2").GetChunk(1024000) & "')")
End if

virker desvaerre ikke, livets landevej kan til tider vaere hard og uvejsom
Avatar billede rebel_penguin Nybegynder
13. september 2004 - 12:17 #5
Smider lige hele koden, i haab om at nogle kan se dagens lys

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<%@ LANGUAGE=VBSCRIPT %>
<%
Response.Expires=0
Response.Expires=-1

'Dataconnection to database *** old one
Dim objConnOld
Set objConnOld = Server.CreateObject("ADODB.Connection")
objConnOld.Mode = 3
objConnOld.CommandTimeout = 60

objConnOld.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & _
            "Data Source= D:\inetpub\wwwroot\_Databaser\Register\webCV.mdb;" & _
            "User Id=admin;" & _
            "Password=;"

''Dataconnection to database *** new one
Dim objConnNew
Set objConnNew = Server.CreateObject("ADODB.Connection")
objConnNew.Mode = 3
objConnNew.CommandTimeout = 60

objConnNew.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & _
            "Data Source= D:\inetpub\wwwroot\_Databaser\Register\webCV_new.mdb;" & _
            "User Id=admin;" & _
            "Password=;"

Response.Write("<p>Db connection established")
Response.Write("<p>Ready to transfer")

objConnNew.BeginTrans
On Error Resume Next

Set RS_From = objConnOld.Execute("SELECT * FROM Experts WHERE ExpertID = 53")
Dim total
total = 0

Do Until RS_From.EOF
    Response.Write("<br />Processing... " & RS_From("ExpertID"))

    objConnNew.Execute("INSERT INTO Experts (Title, FirstName, LastName, Address, City, PostalCode, Country, " _
    & "Email, Phone, Mobile, Nationality, Reference, Price, [Password], [Comments], CV_english, BirthDate, LastLogIn, Company, RegByDTI) " _
    & "VALUES ('" & RS_From("Title") & "', " _
    & "'" & RS_From("FirstName") & "', " _
    & "'" & RS_From("LastName") & "', " _
    & "'" & RS_From("Address") & "', " _
    & "'" & RS_From("City") & "', " _
    & "'" & RS_From("PostalCode") & "', " _
    & "'" & RS_From("Country") & "', " _
    & "'" & RS_From("Email") & "', " _
    & "'" & RS_From("Phone") & "', " _
    & "'" & RS_From("Mobile") & "', " _
    & "'" & RS_From("Nationality") & "', " _
    & "'" & RS_From("Reference") & "', " _
    & "'" & RS_From("Price") & "', " _
    & "'" & RS_From("Password") & "', " _
    & "'" & RS_From("Comments") & "', " _
    & "'" & RS_From("CV") & "', " _
    & "#" & RS_From("BirthDate") & "#, " _
    & "#" & RS_From("LastLogIn") & "#, " _
    & "'', " _
    & "'' " _
    & ")")
   
    If ISNull(rs_from("FileConsult2")) Then
        Response.Write("...null")
    Else
        objConnNew.Execute("INSERT INTO Files (ExpertID, [FileName], [File]) VALUES ('" & RS_From("ExpertID") & "', '" & RS_From("FileNameConsult2") & "', '" & RS_From("FileConsult2").GetChunk(1024000) & "')")
    End if

    'If rs_from("FileConsult1")<>"" Then
    '    Response.Write("...billed")
    'End if

    Response.Write("..." & RS_From("Password"))
    Response.Write("..." & RS_From("Comments"))

    total = total + 1
RS_From.MoveNext
Loop

Response.Write("<br /> Total: " & total)

if Err <> 0 then
    objConnNew.RollbackTrans    'If error undo changes made by our ADO Connection
    Response.write("Error: " & Err.Description)
    'Response.end ' can be turned on in order to troubleshoot better
    'Response.Redirect (sHome & "error_page.asp?message=language&tempemail=" & Request.Form("Email"))
end if

'*****procced with registration and commit db transaction
'if processer has progressed to this site, every database transaction has been succefully
objConnNew.CommitTrans ' thereby we let our ado connection do all of the requested operations.


%>
Avatar billede eagleeye Praktikant
13. september 2004 - 12:53 #6
Prøv med:

If len(""&rs_from("FileConsult2"))=0 Then
Response.Write("...null")
Else
objConnNew.Execute("INSERT INTO Files (ExpertID, FileName, File) VALUES ('" & RS_From("ExpertID") & "', '" & RS_From("FileNameConsult2") & "', '" & RS_From("FileConsult2").GetChunk(1024000) & "')")
End if
Avatar billede rebel_penguin Nybegynder
13. september 2004 - 13:21 #7
Hej EagleEye

Baade If ISNull(rs_from("FileConsult2")) Then og If len(""&rs_from("FileConsult2"))=0 Then virker..... det goer INSERT INTO desvaerre ikke...

Har provet at udskrive fejlen, men den skriver bare blank ud. Hvis jeg kun lader saetningen indsaette ExpertID og FileName er der ingen problemer, det er lige saa snart jeg vil indsaette FileConsult2 i feltet File at det gaar galt. Har overvejet at lave et FILE object som jeg saetter lig RS_From(FileConsult2), men... hvordan kan jeg saa istedet indsaette den i databasen. Synes du det er en god ide, eller har du en losning paa det eksisterende problem ?

mange tak for hjaelpen
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