powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / сканированный документ
25 сообщений из 162, страница 5 из 7
сканированный документ
    #34640916
Фотография %?*?%
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это должна быть функция, что-то вроде

Код: plaintext
1.
2.
Set vc = CreateObject("WIA.Vector")
vc.Add rs("picData")
MyPic.PictureData = vc.Picture

Но проверить сейчас не могу.
...
Рейтинг: 0 / 0
сканированный документ
    #34641563
kobra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
попробовала это и чего-то еще, что нашла на форумах...
ничего у меня не получается:(
...
Рейтинг: 0 / 0
сканированный документ
    #34641933
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kobra,
прикреплённый пример работает?
...
Рейтинг: 0 / 0
сканированный документ
    #34644123
kobra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо %?*?% и Бенедикт !!!!
все заработало :)
чтобы я делала без вас....
...
Рейтинг: 0 / 0
сканированный документ
    #34646362
Фотография %?*?%
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Раз уж начал - закончу. Тоже самое - с использованием WIA Automation Layer.
Просто, чтоб было видно, насколько он упрощает жизнь среднего (посредственного) прикладника... :)

Бенедикту - очередной раз почтение и респект, у меня так и не хватило терпения на GDI+...
...
Рейтинг: 0 / 0
сканированный документ
    #34647476
kobra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
еще раз огромное спасибо !!!
...
Рейтинг: 0 / 0
сканированный документ
    #34649037
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kobra,
пожалуйста.

%?*?%,
думаю, если б GDI+ Flat API был бы нормально документирован, думаю, терпения бы хватило ;).
...
Рейтинг: 0 / 0
сканированный документ
    #34649259
kobra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет еще раз, Бенедикт и %?*?%
Думаю, что это будет последний вопрос по данной теме :)
Что-то у меня совсем переклинило. Надо этот код немного изменить.
Путь к файлу+имя - ячейка Me!Label3, сохраняется в таблицу - ![Doc] = Me!Label3
так вот, мне надо вместо
Код: plaintext
Img.LoadFile "C:\Documents and Settings\eivchenko\Мои документы\Мои рисунки\MyTestPic.tif"

было сохранение этого файла (который был отсканирован)

Код: 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.
Set Img = CreateObject("WIA.ImageFile")
Set IP = CreateObject("WIA.ImageProcess")
Set vc = CreateObject("WIA.Vector")

Set rst = CurrentDb.OpenRecordset("Doc_Temp")

With rst
.AddNew
![Login] = fOSUserName
![FIO] = DLookup("[FIO]", "Login", "[Login] = '" & fOSUserName & "' ")
![Doc] = Me!Label3
![Klient] = Me!Label4
![Summ] = Me!Label5
![DateDoc] = CDate(Date + Time)
![№] = Me!Label6
![KodVal] = Me!Label7

Img.LoadFile "C:\Documents and Settings\eivchenko\Мои документы\Мои рисунки\MyTestPic.tif"

IP.Filters.Add IP.FilterInfos("Convert").FilterID
IP.Filters( 1 ).Properties("FormatID").Value = wiaFormatBMP
IP.Filters( 1 ).Properties("Quality").Value =  5 

Set Img = IP.Apply(Img)
Set vc = Img.FileData
rst("BinData") = vc.BinaryData

.Update
End With
rst.Close
...
Рейтинг: 0 / 0
сканированный документ
    #34649519
Фотография %?*?%
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не понял - файл уже был сохранен в конце процедуры сканирования - иначе откуда бы взялся "Путь к файлу+имя - ячейка Me!Label3"? Здесь идет вызов этого же файла для того чтоб загрузить в таблицу БД. То есть должно быть -

Код: plaintext
Img.LoadFile Me!Label3.Caption
...
Рейтинг: 0 / 0
сканированный документ
    #34649628
kobra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
на этой строке пишет ошибку 438.
...
Рейтинг: 0 / 0
сканированный документ
    #34649652
kobra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а если оставить просто
Код: plaintext
Img.LoadFile Me.Label3
пишет, что файл занят другим процессом.
...
Рейтинг: 0 / 0
сканированный документ
    #34649719
Фотография %?*?%
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Теперь дошло. :)

авторна этой строке пишет ошибку 438.

Label3 - это текстбокс? Тогда конечно никаких Caption. Только лучше переименовать в txtFilePath - чтоб не сбивало с толку...

авторпишет, что файл занят другим процессом.

Добавь в начало:

Код: plaintext
1.
2.
3.
4.
Dim miDoc As MODI.Document

Set miDoc = miVwr.Document
miDoc.Close True
miVwr.Document = ""
...
Рейтинг: 0 / 0
сканированный документ
    #34649766
Фотография %?*?%
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или просто - miVwr.Document.Close
...
Рейтинг: 0 / 0
сканированный документ
    #34649768
kobra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ты, конечно, извини, но, видимо я совсем тормоз
чего я опять не так сделала???

Код: 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.
Dim rst As Recordset
Dim ws As Workspace
Dim dbname As String
Dim dbnew As Database
Dim Img, IP, vc

Dim miDoc As MODI.Document

Set miDoc = miVwr.Document
miDoc.Close True
miVwr.Document = ""

Set Img = CreateObject("WIA.ImageFile")
Set IP = CreateObject("WIA.ImageProcess")
Set vc = CreateObject("WIA.Vector")

Set rst = CurrentDb.OpenRecordset("Doc_Temp")

With rst
.AddNew
![Login] = fOSUserName
![FIO] = DLookup("[FIO]", "Login", "[Login] = '" & fOSUserName & "' ")
![Doc] = Me!Label3
![Klient] = Me!Label4
![Summ] = Me!Label5
![DateDoc] = CDate(Date + Time)
![№] = Me!Label6
![KodVal] = Me!Label7


Img.LoadFile Me.Label3

IP.Filters.Add IP.FilterInfos("Convert").FilterID
IP.Filters( 1 ).Properties("FormatID").Value = wiaFormatBMP
IP.Filters( 1 ).Properties("Quality").Value =  5 

Set Img = IP.Apply(Img)
Set vc = Img.FileData
rst("BinData") = vc.BinaryData

.Update
End With
rst.Close
...
Рейтинг: 0 / 0
сканированный документ
    #34649781
Фотография %?*?%
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где ошибку-то выдает?
...
Рейтинг: 0 / 0
сканированный документ
    #34649786
kobra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
теперь здесь ошибка 91
Код: plaintext
miDoc.Close True
...
Рейтинг: 0 / 0
сканированный документ
    #34649796
Фотография %?*?%
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miVwr.Document.Close

или

Dim miDoc As MODI.Document

Set miDoc = miVwr.Document
miVwr.Document = ""
miDoc.Close True
...
Рейтинг: 0 / 0
сканированный документ
    #34649830
kobra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если
Код: plaintext
miVwr.Document.Close
пишет ошибку 424 - object required

а если
Код: plaintext
1.
2.
3.
4.
Dim miDoc As MODI.Document

Set miDoc = miVwr.Document
miVwr.Document = ""
miDoc.Close True
выдает ошибку 13 - Type mismatch
...
Рейтинг: 0 / 0
сканированный документ
    #34649835
kobra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ошибка несоответствия на строке
Код: plaintext
miVwr.Document = ""
...
Рейтинг: 0 / 0
сканированный документ
    #34649947
Фотография %?*?%
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чувствую, что пока ты допишешь свою прогу, я буду знать объектные модели WIA и MODI наизусть...

Попробуй так:

Код: plaintext
1.
2.
3.
4.
5.
Dim miDoc As MODI.Document

Set miDoc = Me.MiDocView1.Document
Me.MiDocView1.FileName = ""
miDoc.Close
Set miDoc = Nothing
...
Рейтинг: 0 / 0
сканированный документ
    #34649959
Фотография %?*?%
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вместо MiDocView1 - miVwr
...
Рейтинг: 0 / 0
сканированный документ
    #34650049
kobra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я уже много перечитала и перепробовала с этой прогой.
изначально планировалось одно, а постепенно функции растут и растут
все указала, как ты написал, опять - процесс не может получить доступ к файлу, т.к. этот файл занят другим приложением.
Код: plaintext
Img.LoadFile Me.Label3
это просто ужас какой-то...
эта программа достала меня, а я тебя...)))
...
Рейтинг: 0 / 0
сканированный документ
    #34650151
Фотография %?*?%
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странно... Ладно, сейчас попробую проверить, что это за зверюшка там порылась... У тебя там нет никаких дополнительных процедур между сканированием и сохранением? Проверь, что везде убиваются созданные экземпляры:

Set a = ...
...
Set a = Nothing

На край всегда можно сделать так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Private Declare Function apiCopyFile Lib "kernel32" Alias "CopyFileA" _
(ByVal lpExistingFileName As String, _
ByVal lpNewFileName As String, _
ByVal bFailIfExists As Long) As Long


Sub ....

..... ' whatever you need

sDir = Me!Label3
tDir = "c:\"
fNm = MyFileName

apiCopyFile(sDir & fNm, tDir & fNm, False)

Img.LoadFile tDir  & fNm

..... ' whatever you wish

Kill tDir & fNm

End sub
...
Рейтинг: 0 / 0
сканированный документ
    #34650260
kobra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну, смотри.
на форме у меня две кнопки: сканировать и сохранить.
вроде все просмотрела, ничего не нашла подозрительного
сейчас, я просто не сканирую, а открываю файл с диска.
в общем код такой:
Код: plaintext
1.
2.
3.
Option Compare Database
Option Explicit
Private Declare Function apiGetUserName Lib "advapi32.dll" Alias _
    "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Код: plaintext
1.
2.
3.
4.
5.
Private Sub Command1_Click()
Dim a As Boolean

a = DocScan1()
MsgBox ("Проверьте правильность указания суммы !!!")
End Sub
DocScan1- открытие файла

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Private Function DocScan1() As Boolean

Dim blnResult As Boolean
Dim WIADevice As WIA.Device
Dim WIAProcess As WIA.ImageProcess
Dim WIAItem As WIA.Item
Dim WIAProperty As WIA.Property
Dim WIAImage As WIA.ImageFile
Dim d As String
Dim m_tempfile As String
Dim wiaDialog As New WIA.CommonDialog
Dim sArr As Variant

m_tempfile = "C:\Documents and Settings\eivchenko\Мои документы\Мои рисунки\М0304-3013 от 28.05.07.tif"

        d = txtOCR(m_tempfile)
        Me.Label2 = d
        sArr = Split(d, " ")
        Me.Label3 = m_tempfile
        Me.Label4 = sArr( 19 ) & " " & sArr( 20 )
End Function

если сканировать, то на кнопке
Код: 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.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
Private Function DocScan() As Boolean
On Error GoTo error_DocScan

Dim blnResult As Boolean
Dim WIADevice As WIA.Device
Dim WIAProcess As WIA.ImageProcess
Dim WIAItem As WIA.Item
Dim WIAProperty As WIA.Property
Dim WIAImage As WIA.ImageFile
Dim d As String
Dim m_tempfile As String
Dim wiaDialog As New WIA.CommonDialog
Dim sArr As Variant
Dim ii, i
Dim counter1, counter2
Dim str_val As String
Dim str1 As String
Dim mask_sym As Boolean


m_tempfile = "\\Srvparus.rs.ru\groups\OTD\Projects-Ryzhov\Документооборот_по_валютным_переводам\заявления\заявление" _
& "_" & DatePart("d", Now()) & "_" & DatePart("m", Now()) & DatePart("y", Now()) _
& "_" & DatePart("h", Now()) & "_" _
& DatePart("n", Now()) & "_" & DatePart("s", Now()) & ".tif"


blnResult = True
Set WIADevice = wiaDialog.ShowSelectDevice(WIA.WiaDeviceType.ScannerDeviceType, False, True)

If WIADevice.Type = WIA.ScannerDeviceType Then
    Set WIAProcess = CreateObject("Wia.ImageProcess")
    WIAProcess.Filters.Add WIAProcess.FilterInfos("Convert").FilterID
    WIAProcess.Filters(WIAProcess.Filters.Count).Properties("FormatID").Value = _
    WIA.wiaFormatTIFF
    
    For Each WIAItem In WIADevice.Items
        DoEvents

        For Each WIAProperty In WIAItem.Properties
            Select Case WIAProperty.PropertyID
                Case  6146  ' Current Intent
                    WIAProperty.Value =  4 
                Case  6147  ' Horizontal Resolution
                    WIAProperty.Value =  2400  ' 300 DPI
                Case  6148  ' Vertical Resolution
                    WIAProperty.Value =  2400  ' 300 DPI
            End Select
        Next

        Set WIAImage = WIAItem.Transfer
        Set WIAImage = WIAProcess.Apply(WIAImage)
        WIAImage.SaveFile m_tempfile
        d = txtOCR(m_tempfile)
        Me.Label2 = d
        sArr = Split(d, " ")
        Me.Label3 = m_tempfile
        
        Me.Label4 = Null
        Me.Label5 = Null
        Me.Label6 = Null
        
        mask_sym = False
        counter1 =  0 
        counter2 =  0 
        
        For i =  0  To UBound(sArr)
        
        If mask_sym = True And (((sArr(i) Like "###*") = True And (sArr(i) Like "000") = False) Or (sArr(i) Like "*Россия*") = True Or (sArr(i) Like "*М*ск*в*") = True) Then
        counter2 = i -  1 
        Exit For
        End If
        
        If (sArr(i) Like "##########") = True Then
        counter1 = i +  1 
        mask_sym = True
        End If
        
        Next i
        
        str_val = ""
        For i = counter1 To counter2
        If (sArr(i) Like "*щ*тв*") = True Or (sArr(i) Like "*гр*нич*" = True) Or (sArr(i) Like "*тв*енн*" = True) Then
        str1 = "О"
        Else
        If (sArr(i) Like "*акрыт*" = True) Then
        str1 = "З"
        Else
        If (sArr(i) Like "акц*н*рн*" = True) Then
        str1 = "А"
        Else
        If (sArr(i) Like "с" = True) Then
        str1 = ""
        Else
        str1 = sArr(i) + " "
        End If
        End If
        End If
        End If
        
        str_val = str_val + str1
        If (str_val Like "ЗАО") = True Or (str_val Like "ООО") = True Then
        str_val = str_val + " "
        End If
        Next i
        
        For i = counter2 To UBound(sArr)
        If (sArr(i) Like "*#.##") = True Then
        Me.Label5 = sArr(i)
        Exit For
        End If
        
        If (sArr(i) Like "*банк") = True Then
        Exit For
        End If
        Next i
        
        Me.Label4 = str_val
    
    Next
Else
    blnResult = False
    MsgBox "Scanner not found"
End If

DocScan = blnResult
Exit Function

error_DocScan:
DocScan = False
MsgBox "Scanning failed - " & Err.Description
Err.Clear
End Function

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Private Function txtOCR(fName As String) As String

Dim miDoc As MODI.Document
Dim miWord As MODI.Word
Dim j As Integer, i As Integer
  
  Set miDoc = New MODI.Document
  miDoc.Create fName
  miDoc.Images( 0 ).OCR miLANG_RUSSIAN,  0 ,  0 
  j = miDoc.Images( 0 ).Layout.Words.Count -  1 
  For i =  0  To j
  Set miWord = miDoc.Images( 0 ).Layout.Words(i)
  txtOCR = txtOCR & Space( 1 ) & miWord.Text
  txtOCR = Trim(txtOCR)
  Next
  miVwr.FitMode = miByWidth
  miVwr.Document = miDoc
  Set miWord = Nothing
  Set miDoc = Nothing

End Function

и кнопка сохранить
Код: 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.
Private Sub Save_Click()

Dim rst As Recordset
Dim ws As Workspace
Dim dbname As String
Dim dbnew As Database
Dim Img, IP, vc


Set Img = CreateObject("WIA.ImageFile")
Set IP = CreateObject("WIA.ImageProcess")
Set vc = CreateObject("WIA.Vector")

Set rst = CurrentDb.OpenRecordset("Doc_Temp")

With rst
.AddNew
![Login] = fOSUserName
![FIO] = DLookup("[FIO]", "Login", "[Login] = '" & fOSUserName & "' ")
![Doc] = Me!Label3
![Klient] = Me!Label4
![Summ] = Me!Label5
![DateDoc] = CDate(Date + Time)
![№] = Me!Label6
![KodVal] = Me!Label7


Img.LoadFile Me.Label3

IP.Filters.Add IP.FilterInfos("Convert").FilterID
IP.Filters( 1 ).Properties("FormatID").Value = wiaFormatBMP
IP.Filters( 1 ).Properties("Quality").Value =  5 

Set Img = IP.Apply(Img)
Set vc = Img.FileData
rst("BinData") = vc.BinaryData

.Update
End With
rst.Close

End Sub
...
Рейтинг: 0 / 0
сканированный документ
    #34650275
Фотография %?*?%
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, и в конце этой процедуры должно идти

Set Img = Nothing
Set IP = Nothing
Set vc = Nothing

Проверил, у меня файл освобождается нормально -

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Private Sub Command1_Click()

MiDocView1.FileName = "C:\Test.tif"
MiDocView1.FitMode = miByTextWidth

End Sub

Private Sub Command2_Click()
Dim miDoc As MODI.Document

Set miDoc = Me.MiDocView1.Document
Me.MiDocView1.FileName = ""
miDoc.Close
Set miDoc = Nothing

End Sub

Private Sub Command3_Click()
Dim Img As New WIA.ImageFile

Img.LoadFile "C:\Test.tif"
Set Img = Nothing

End Sub

Все отрабатывает без ошибок в последовательности Command1 > Command2 > Command3
...
Рейтинг: 0 / 0
25 сообщений из 162, страница 5 из 7
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / сканированный документ
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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