Avatar billede mss1201 Nybegynder
22. august 2000 - 10:50 Der er 6 kommentarer og
1 løsning

Word dokumenter i oracle

Jeg vil gerne vide hvordan man gemmer et word dok. i en oracle database er der en der kan hjælpe ???
Avatar billede pnielsen Nybegynder
22. august 2000 - 11:18 #1
Den bedste løsning er at bruge oracles intermedia feature.
Her følger INSO filtre med, som kan indexere din word,excel etc.
Så har du også mulighed for at lave meget hurtige søgninger!!
Avatar billede mss1201 Nybegynder
22. august 2000 - 12:22 #2
Jeg vil gerne se et eksempel
Avatar billede pnielsen Nybegynder
22. august 2000 - 12:28 #3
hmmmm. Det nemmeste er nok at kigge i installationguide!!! Det kræver en del at sætte intermedia op.
Listener skal konfigueres rigtigt. Filtre skal sættes op etc.
Avatar billede frifoed Nybegynder
23. september 2000 - 21:58 #4
Når man skal arbejde med dokumenter i Oracle kræves produktet:
Oracle Intermedia text (tidligere kaldet \"context\").

Oracle Intermedia bliver leveret (og installeret ved en standard installation) med selve databasen, fra version 8.1.5.

Når databasen er installeret korrekt skal Intermedia konfigureres (følg blot den medfølgende vejledning).

Selve Oracle Intermedia kan levere den funktionalitet du ønsker. Alle de store dokumenthåndterings-systemer (på Oracle) bygger på Oracle Intermedia (eller context, som den ældre version hedder).

Intermedia understøtter mange forskellige dokumenttyper (word, excel, power point, pdf osv.). Dokumenter bliver gemt som BLOB i databasen, og herefter kan der laves fritekstsøgning på dokumenterne (via INSO-filteret). Vær dog opmærksom på at INSO-filter pt. kun er understøttet på NT og Solaris.
Det kan dog også køre på Linux og andre Unix varianter, men det er et mere komplekst setup, som i øjeblikket i Danmark, kun er BellCom Internet der kan løse.

Nedenfor er to links hvor kan se mere uddybende informationer (de er fra < href\"http://technet.oracle.com/\">Oracle technet</a>. Du skal være meldt til for at accesse siderne, men det er gratis...:

Oracle8i interMedia Text Reference
<a href=\"http://technet.oracle.com/doc/inter.815/a67843/toc.htm\">http://technet.oracle.com/doc/inter.815/a67843/toc.htm</a>

Intermedia textcode examples:
<a href=\"http://technet.oracle.com/sample_code/products/intermedia/htdocs/text_samples/Lite/Samples/iMT_Samples.html\">http://technet.oracle.com/sample_code/products/intermedia/htdocs/text_samples/Lite/Samples/iMT_Samples.html</a>

Go´ arbejdslyst...;-)
Avatar billede skovborg Nybegynder
24. oktober 2000 - 09:34 #5

Private Sub alt_ud_Click()
\'LÆSER FRA DATABASEN TIL EN FIL
 
    Dim OraSession As OraSession
    Dim OraDatabase As OraDatabase
    Dim PartDesc As OraClob
    Dim AmountRead As Long
   
    Dim buffer As Variant
    Dim buf As String
   
    Dim count As Integer
    Dim id_str As String
    Dim gemsom As String
   
    \'Create the OraSession Object.
    Set OraSession = CreateObject(\"OracleInProcServer.XOraSession\")

    \'Create the OraDatabase Object.
    Set OraDatabase = OraSession.OpenDatabase(\"krusty\", \"mek/mek\", O0&)
   
    OraDatabase.Parameters.Add \"PartDesc\", Null, ORAPARM_OUTPUT
    OraDatabase.Parameters(\"PartDesc\").serverType = ORATYPE_CLOB
   
    Set OraDynaset = OraDatabase.Dbcreatedynaset(\"select * from multimedia\", O0&)
    count = OraDynaset.RecordCount
    Count_textbox.Text = count
   
 
    \'indsætter filen på placeringen
   
    filen = FreeFile
   
    Do Until OraDynaset.EOF
          \'Set PartDecs = OraDatabase.Parameters(\"PartDesc\").Value
          Set PartDesc = OraDynaset.Fields(\"text\").Value
          id_str = CStr(OraDynaset.Fields(\"id\").Value)
          ID_List.AddItem (id_str)
          gemsom = \"c:\\test doc\\\" & id_str & \".doc\"
          Open gemsom For Binary As #filen
          \'Finder filen eller opretter fil som data skal gemmes i
          PartDesc.CopyToFile filen
          Close #filen
         
   
    OraDynaset.MoveNext
    Loop
     
    MsgBox \"Alle filer er læst ud på C:\\test\\ \"

End Sub

Private Sub CLOB_Read_Click()
  \'Declare variables as OLE Objects.
 
  \'LÆSER FRA DATABASEN TIL EN FIL
 
    Dim OraSession As OraSession
    Dim OraDatabase As OraDatabase
    Dim PartDesc As OraClob
    Dim AmountRead As Long
   
    Dim buffer As Variant
    Dim buf As String
   
    \'Create the OraSession Object.
    Set OraSession = CreateObject(\"OracleInProcServer.XOraSession\")

    \'Create the OraDatabase Object.
    Set OraDatabase = OraSession.OpenDatabase(\"krusty\", \"mek/mek\", O0&)

    \'Add PartDesc as an Output parameter and set its initial value.
    OraDatabase.Parameters.Add \"PartDesc\", Null, ORAPARM_OUTPUT
    OraDatabase.Parameters(\"PartDesc\").serverType = ORATYPE_CLOB
   
  \'Execute the statement returing \'PartDesc\'
    OraDatabase.ExecuteSQL (\"BEGIN select text into :PartDesc  from multimedia where id =\" & ID_text.Text & \"for update NOWAIT; END;\")

  \'Get \'PartDesc\' from Parameters collection
    Set PartDesc = OraDatabase.Parameters(\"PartDesc\").Value

  \'Get a free file number
    FNum = FreeFile
   
    \'Open the file.
    \'Finder filen eller opretter fil som data skal gemmes i
    CommonDialog1.ShowOpen
    MsgBox CommonDialog1.FileName
    \'åbner filen som binær
    Open CommonDialog1.FileName For Binary As #FNum
    \'indsætter filen på placeringen
    PartDesc.CopyToFile CommonDialog1.FileName
   
    Close FNum
   
    MsgBox \"Read operation successfull\"

End Sub

Private Sub CLOB_Write_Click()

\'LÆSER FRA FIL TIL DATABASEN

Dim OraSession As OraSession
Dim OraDatabase As OraDatabase
Dim OraDynaset As OraDynaset
Dim PartDesc As OraClob
Dim buffer As String
Dim chunksize As Long
Dim amount_written As Long
Dim sqlstr As Variant
Dim NextID As Integer
 
\'åbner dialogbog for at vælge fil
CommonDialog1.DialogTitle = \"Gem i databasen\"
CommonDialog1.ShowSave
MsgBox CommonDialog1.FileName
   

\'Create the OraSession Object.
Set OraSession = CreateObject(\"OracleInProcServer.XOraSession\")

\'Create the OraDatabase Object by opening a connection to Oracle.
Set OraDatabase = OraSession.DbOpenDatabase(\"krusty\", \"mek/mek\", &O0)

\'indsæt ny record i databasen
\'Create the OraDynaset Object
\' find næste id ved at slå op i mek2_seq fra sys.dual som er en
\'system fil der kan benyttes af alle
Set OraDynaset = OraDatabase.Dbcreatedynaset(\"SELECT MEK2_SEQ.NEXTVAL FROM sys.DUAL\", ORADB_ORAMODE) \' &O0)
NextID = OraDynaset.Fields(0).Value
\'den nye række oprettes ved hjælp af en pluddersætning i sqlstr
\'hvorefter der oprettes et felt
sqlstr = \"select * from multimedia where id =\" & CStr(NextID)
Set OraDynaset = OraDatabase.Dbcreatedynaset(sqlstr, &O0) \'ORADYN_ORAMODE) \'&O16)
With OraDynaset
      .AddNew
      .Fields(\"id\").Value = NextID
      .Fields(\"text\").Value = Empty \' empty_clob()
      .Update
      .MoveLast
      Set PartDesc = .Fields(\"text\").Value
      .Edit
      If Not PartDesc.IsNull Then
          PartDesc.CopyFromFile CommonDialog1.FileName
      End If
      .Update
    End With
   
\'vælg den nye række og sæt filen in i dette felt
\'sqlstr = \"select * from multimedia where id =\" & CStr(NextID)
\'Sqlfelt.Text = sqlstr
\'Set OraDynaset = OraDatabase.DbCreateDynaset(sqlstr, 0&) \'ORADYN_ORAMODE) \'O0&)

Set PartDesc = OraDynaset.Fields(\"text\").Value

chunksize = 32000

\'Re adjust the buffer size
buffer = String$(chunksize, 32)

FNum = FreeFile

\'Open the file.
\'Open \"c:\\test.doc\" For Binary As #FNum
\'åben og vælg fil
Open CommonDialog1.FileName For Binary As #FNum


\'set the offset and PollingAmount properties for piece wiseWrite operation
PartDesc.offset = 1
PartDesc.PollingAmount = LOF(FNum)
remainder = LOF(FNum)

If (LOF(FNum) = 0) Then
        MsgBox \"File size is zero. Make sure that existence of File and its path are correct\"
        Exit Sub
End If
MsgBox \"Test box længden af filen er : \" & LOF(FNum) & \" ID i databasen er \" & CStr(NextID)
\'Lock the row for write operation
OraDynaset.Edit

    Get #FNum, , buffer
       
    \'Do first write operation
    amount_written = PartDesc.Write(buffer, chunksize, ORALOB_FIRST_PIECE)

    While PartDesc.Status = ORALOB_NEED_DATA
        remainder = remainder - chunksize
        If remainder < chunksize Then
            piecetype = ORALOB_LAST_PIECE
            chunksize = remainder
        Else
            piecetype = ORALOB_NEXT_PIECE
        End If
        Get #FNum, , buffer
        amount_written = PartDesc.Write(buffer, chunksize, piecetype)
   
    Wend

    Close FNum
   
\'call Update method to commit the transaction
OraDynaset.Update

MsgBox \"PartDesc.Size \" & PartDesc.Size

MsgBox \"Write operation successfull\"

   
End Sub

Private Sub Command1_Click()
MsgBox PartDesc.Size

OraDynaset.Edit

PartDesc.CopyFromFile \"c:\\\\test.doc\"

OraDynaset.Update

MsgBox PartDesc.Size

Exit Sub
End Sub
Avatar billede skovborg Nybegynder
24. oktober 2000 - 09:36 #6
det var det her jeg ville have ikke alle mulige henvisninger. nej, et eksembel som jeg kan arbejde ud fra.... det er forsent nu for som i kan se har jeg lavet koden

vi ses
skovborg
Avatar billede mss1201 Nybegynder
24. oktober 2000 - 09:40 #7
Fint skovborg det var også det jeg manglede

tak
mss1201
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
Computerworld tilbyder specialiserede kurser i database-management

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