powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Надо загрузить word файл из базы SQL Server 2000
24 сообщений из 24, страница 1 из 1
Надо загрузить word файл из базы SQL Server 2000
    #34326136
Modi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim Strm As New ADODB.Stream
Dim wa as New Word.Application
Dim wd As New Word.Document

cn.Provider = "sqloledb"
cn.Properties("Data Source").Value = "ServerName"
cn.Properties("Initial Catalog").Value = "Database Name"
cn.Properties("Integrated Security").Value = "SSPI"
cn.Open

rs.Open "Select * From TableName", cn

вот мне надо запихнуть туда word файл и загрузить если нужно, кто нибудь знает как это можно делать?

когда я с access делаю это вот так (в access е у меня тип поля OLE Object):

Strm.Open
Strm.Type = adTypeBinary
Strm.Write rs.Filds("File").Values
Strm.SaveToFile "C:\temp.bin"
Strm.Close

Set wd = wa.Documents.Open("C:\temp.bin")

cn.Close
rs.Close

Set cn = Nothing
Set rs = Nothing

Call wd.Close
Call wa.Quit

Set wa = Nothing
Set wd = Nothing

вот тепер не знаю где ошибка подскажите пожалуста или если знаете другой метод скажите этот.
Но мне надо с SQL.
Спасибо.
...
Рейтинг: 0 / 0
Надо загрузить word файл из базы SQL Server 2000
    #34326147
Modi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я забыл сказать у меня открывает binary file.
...
Рейтинг: 0 / 0
Надо загрузить word файл из базы SQL Server 2000
    #34326583
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У автора склероз?
Тынц.
...
Рейтинг: 0 / 0
Надо загрузить word файл из базы SQL Server 2000
    #34326592
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Modi Я забыл сказать у меня открывает binary file.Определенно склероз...
...
Рейтинг: 0 / 0
Надо загрузить word файл из базы SQL Server 2000
    #34326802
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторв access е у меня тип поля OLE Object
ключевая фраза!!!!
отсюда и вытекающие последствия.
использовать надо BLOB поля , записывать в них AppendChunk, а считывать GetChunk.

AppendChunk and GetChunk Methods Example (VB)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
ADO samples MSDN

'BeginAppendChunkVB

    'To integrate this code
    'replace the data source and initial catalog values
    'in the connection string
    
Public Sub AppendChunkX()

    'recordset and connection variables
   Dim Cnxn As ADODB.Connection
   Dim strCnxn As String
   Dim rstPubInfo As ADODB.Recordset
   Dim strSQLPubInfo As String
    'record variables
   Dim strPubID As String
   Dim strPRInfo As String
   Dim lngOffset As Long
   Dim lngLogoSize As Long
   Dim varLogo As Variant
   Dim varChunk As Variant
   Dim strMsg As String
   
   Const conChunkSize =  100 

   ' Open a connection
   Set Cnxn = New ADODB.Connection
   strCnxn = "Provider=sqloledb;Data Source=MyServer;Initial Catalog=Pubs;User Id=sa;Password=; "
   Cnxn.Open strCnxn
   
   ' Open the pub_info table with a cursor that allows updates
   Set rstPubInfo = New ADODB.Recordset
   strSQLPubInfo = "pub_info"
   rstPubInfo.Open strSQLPubInfo, Cnxn, adOpenKeyset, adLockOptimistic, adCmdTable
   
   ' Prompt for a logo to copy
   strMsg = "Available logos are : " & vbCr & vbCr
   Do While Not rstPubInfo.EOF
      strMsg = strMsg & rstPubInfo!pub_id & vbCr & _
         Left(rstPubInfo!pr_info, InStr(rstPubInfo!pr_info, ",") -  1 ) & _
         vbCr & vbCr
      rstPubInfo.MoveNext
   Loop
   
   strMsg = strMsg & "Enter the ID of a logo to copy:"
   strPubID = InputBox(strMsg)
   
   ' Copy the logo to a variable in chunks
   rstPubInfo.Filter = "pub_id = '" & strPubID & "'"
   lngLogoSize = rstPubInfo!logo.ActualSize
   Do While lngOffset < lngLogoSize
      varChunk = rstPubInfo!logo.GetChunk(conChunkSize)
      varLogo = varLogo & varChunk
      lngOffset = lngOffset + conChunkSize
   Loop
   
   ' Get data from the user
   strPubID = Trim(InputBox("Enter a new pub ID" & _
                            " [must be > 9899 & < 9999]:"))
   strPRInfo = Trim(InputBox("Enter descriptive text:"))

   ' Add the new publisher to the publishers table to avoid
   ' getting an error due to foreign key constraint
   Cnxn.Execute "INSERT publishers(pub_id, pub_name) VALUES('" & _
                  strPubID & "','Your Test Publisher')"
   
   ' Add a new record, copying the logo in chunks
   rstPubInfo.AddNew
   rstPubInfo!pub_id = strPubID
   rstPubInfo!pr_info = strPRInfo

   lngOffset =  0  ' Reset offset
   Do While lngOffset < lngLogoSize
      varChunk = LeftB(RightB(varLogo, lngLogoSize - lngOffset), _
         conChunkSize)
      rstPubInfo!logo.AppendChunk varChunk
      lngOffset = lngOffset + conChunkSize
   Loop
   rstPubInfo.Update
   
    ' Show the newly added data
   MsgBox "New record: " & rstPubInfo!pub_id & vbCr & _
      "Description: " & rstPubInfo!pr_info & vbCr & _
      "Logo size: " & rstPubInfo!logo.ActualSize

   ' Delete new records because this is a demo
   rstPubInfo.Requery
   Cnxn.Execute "DELETE FROM pub_info " & _
      "WHERE pub_id = '" & strPubID & "'"

   Cnxn.Execute "DELETE FROM publishers " & _
      "WHERE pub_id = '" & strPubID & "'"

    ' clean up
   rstPubInfo.Close
   Cnxn.Close
   Set rstPubInfo = Nothing
   Set Cnxn = Nothing

End Sub
'EndAppendChunkVB
...
Рейтинг: 0 / 0
Надо загрузить word файл из базы SQL Server 2000
    #34326848
Modi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy: это у тебя склероз еше раз так разбалтаешся смотри не хочеш не отвечай ты ни чем не лудше тех кто ответил. Значит не получается поэтому сново написал. Это не повод.
...
Рейтинг: 0 / 0
Надо загрузить word файл из базы SQL Server 2000
    #34326855
Modi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy: и еше если ты такой умный бери тот пример и попробуй решит задачу.
...
Рейтинг: 0 / 0
Надо загрузить word файл из базы SQL Server 2000
    #34326867
Modi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One : Знаете в чем проблема могу ли я загрузить с помошю обекта Word этот док. Он же в бинарном виде ведь в файле?
...
Рейтинг: 0 / 0
Надо загрузить word файл из базы SQL Server 2000
    #34327262
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
конечно, вы его запишете в файл и файл откроете уже в ворде. посмотрите внимательно код примера из MSDN.

PS
и пример Antonariy вам поможет в файл записать.
...
Рейтинг: 0 / 0
Надо загрузить word файл из базы SQL Server 2000
    #34327406
Modi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо
...
Рейтинг: 0 / 0
Надо загрузить word файл из базы SQL Server 2000
    #34327488
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я постояно пользуюсь этим методом, поэтому и пишу. Это самый простой способ, мне сложно представить, что может не получиться. GetChunk можно юзать, если нужно считать кусок байтового массива. ADODB.Stream лучше вообще не юзать, там где он не нужен, тем более если не понимаешь его смысла. Его основная цель - сериализация рекордсетов в байтовые массивы для передачи их по сети через COM+/DCOM.
ModiЗначит не получается поэтому сново написал. Это не повод.Это не повод создавать второй топик. И лучше написать как пробовал , чем трясти своим прищемленным эго. А мы бы объяснили почему не получилось . Иначе то или иное получаться не будет еще долгие годы.

Я знаю, о чем говорю, без обид))
...
Рейтинг: 0 / 0
Надо загрузить word файл из базы SQL Server 2000
    #34327751
Modi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Do While lngOffset < lngLogoSize
varChunk = rstPubInfo!logo.GetChunk(conChunkSize)
varLogo = varLogo & varChunk
lngOffset = lngOffset + conChunkSize
Loop
допустим поле logo содержит Word файл как мне открыть этот файл (например во время клика на Command button)?
И да если я не конкретно задаю вопрос так и скажите, не надо так эронично.
...
Рейтинг: 0 / 0
Надо загрузить word файл из базы SQL Server 2000
    #34327780
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может вам проще пример Antonariy:


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Private Sub Command1_Click()
Dim FotoData() As Byte

    ....
    If rsData("Image").ActualSize >  0  Then
        FotoData = rsData("Image").Value
        Open "c:\tmp.doc" For Binary As # 1 
        Put # 1 , , FotoData
        Close # 1 
    End If
    ....

    Shell "c:\tmp.doc"
End Sub
...
Рейтинг: 0 / 0
Надо загрузить word файл из базы SQL Server 2000
    #34327802
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ошибочка вкралась:

Код: plaintext
Shell "C:\Program Files\Microsoft Office\OFFICE11\winword.exe C:\tmp.doc", vbNormalFocus
...
Рейтинг: 0 / 0
Надо загрузить word файл из базы SQL Server 2000
    #34327829
Modi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо попробую и напишу
...
Рейтинг: 0 / 0
Надо загрузить word файл из базы SQL Server 2000
    #34327874
Modi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
правда я пробовал сделать это с аксес. у меня там есть поле OLE Object который содежит файл какой то. Я вот так открываю но у меня открывается бинарный файл.

Private Sub Command1_Click()
Dim FotoData() As Byte

....
If rsData("Image").ActualSize > 0 Then
FotoData = rsData("Image").Value
Open "c:\tmp.doc" For Binary As #1
Put #1, , FotoData
Close #1
End If
....

Shell "C:\Program Files\Microsoft Office\OFFICE11\winword.exe C:\tmp.doc", vbNormalFocus
End Sub
...
Рейтинг: 0 / 0
Надо загрузить word файл из базы SQL Server 2000
    #34327900
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я же в первом ответе вам сказал, что поле OLE - это отдельная история. вам все-таки придется поупражняться в записи в это поле через AppendChunk и считывания через GetChunk (в документации к Акцесс это есть). Если вы вкладывали свои ворд-документы через связанную OLE-рамку на форме, то достать этот документ будет ой как не просто.
...
Рейтинг: 0 / 0
Надо загрузить word файл из базы SQL Server 2000
    #34327914
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Значит это не вордовский документ. Выложите либо то, что сохранилось, либо кусок базы с этой записью. Если влезет в аттач.
...
Рейтинг: 0 / 0
Надо загрузить word файл из базы SQL Server 2000
    #34327985
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
Function BinExport(TableName As String, FileName As String, BinaryFeld As String, IDNr As String)
Dim DB As DAO.Database, rs As DAO.Recordset, I As Long, Nr As Long, BinaryData() As Byte

Set DB = CurrentDb
Set rs = DB.OpenRecordset("Select " & BinaryField & " from " & TableName & " where [ID]=" & IDNr)
rs.MoveFirst

Nr = FreeFile

  Open FileName For Binary As #Nr

    ReDim BinaryData(rs(BinaryFeld).FieldSize)

    BinaryData() = rs(BinaryFeld).GetChunk( 0 , rs(BinaryFeld).FieldSize)
    Put #Nr, , BinaryData()

  Close #Nr

  Erase BinaryData

  rs.Close
  DB.Close
  Set rs = Nothing
  Set DB = Nothing

End Function

вот для DAO, может тормозить на больших объемах документа
...
Рейтинг: 0 / 0
Надо загрузить word файл из базы SQL Server 2000
    #34327987
Modi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извените меня если я надоедаю.
Вот посмотрите на прекрипленный пример с OLE. Но мне надо делат что то вроде этого с SQL.
...
Рейтинг: 0 / 0
Надо загрузить word файл из базы SQL Server 2000
    #34328136
Modi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы не хотите посмотреть?
...
Рейтинг: 0 / 0
Надо загрузить word файл из базы SQL Server 2000
    #34330122
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OLE не работает с SQL сервером, SQL Server не работает c DAO, через который OLE связывается с аксессом. Привязку через DataSource сделать не получится. Это работает так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
Dim cn As New ADODB.Connection

Private Sub Command1_Click()
Dim rs As New ADODB.Recordset
    CommonDialog1.Filter = "Word Files (*.doc)|*.doc"
    CommonDialog1.ShowOpen
    rs.Open "select top 1 * from categories", cn, adOpenStatic, adLockBatchOptimistic
    rs("Picture").Value = ReadFile(CommonDialog1.FileName)
    rs.UpdateBatch
End Sub

Private Sub Command2_Click()
Dim rs As New ADODB.Recordset
Dim wa As New Word.Application
Dim wd As New Word.Document
    rs.Open "select top 1 * from categories", cn, adOpenStatic, adLockBatchOptimistic
    WriteFile "c:\doc1.doc", rs("Picture").Value
    Set wd = wa.Documents.Open("c:\doc1.doc", , False)
    wa.Visible = True
    Set wd = Nothing
    Set wa = Nothing
End Sub

Private Sub Form_Load()
    cn.CursorLocation = adUseClient
    cn.Open "driver={sql server};server=(local);database=NorthWind;"
End Sub

Public Function ReadFile(path As String) As Byte()
Dim r() As Byte
    If Dir(path) = "" Then Exit Function
    Open path For Binary As # 1 
    ReDim r(LOF( 1 ) -  1 )
    Get # 1 , , r
    Close # 1 
    ReadFile = r
End Function

Public Sub WriteFile(path As String, conts() As Byte)
    If Dir(path) <> "" Then Kill path
    Open path For Binary As # 1 
    Put # 1 , , conts
    Close # 1 
End Sub
На компьютере должен быть установлен SQL сервер, в нем должна быть стандартная база NorthWind.
...
Рейтинг: 0 / 0
Надо загрузить word файл из базы SQL Server 2000
    #34330786
Modi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ок. Спасибо.
И еше один вопрос этот BLOB тип я не нахожу в SQL. там есть binary, image....
...
Рейтинг: 0 / 0
Надо загрузить word файл из базы SQL Server 2000
    #34330922
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
image
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Надо загрузить word файл из базы SQL Server 2000
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]