2015-02-27 4 views
0

Я кодирую приложение для печати счетов. У меня есть форма, в которой я загружаю данные. Я хочу автоматизировать печать, поэтому в этом порядке я сохраняю изображение BMP моей заполненной формы и затем сохраняю в базе данных mdf для поздней печати каждой строки/ячейки (изображения в этом случае). Но когда я перетаскиваю таблицу в форму предварительного просмотра (только для chek, если я правильно храню данные), появляется идентификатор каждой строки, но я не вижу изображение этой строки ... вопрос в том, что я делаю неправильно здесь? (Я смотрел много учебников по уплотнительное последние 3 дня, но я не могу понять, все же, что делать)Хранение растрового изображения в sql

Public Sub toBitMap() 
    'Define un nuevo bitmap con las dimensiones del form 
    Dim miBitMap As New Bitmap(imprimir.Width, imprimir.Height) 
    ' Dibuja la imagen del form en un objetoBitmap 
    imprimir.DrawToBitmap(miBitMap, New Rectangle(0, 0, imprimir.Width, imprimir.Height)) 
    Dim memoryStreamBuffer = New MemoryStream() 
    miBitMap.Save(memoryStreamBuffer, ImageFormat.Bmp) 
    Dim data As Byte() = memoryStreamBuffer.GetBuffer() 
    Dim saveImage As imagenesTableAdapter = New imagenesTableAdapter 
    Dim a As String = saveImage.insertImagen(data) 
    If multiple.iteraciones <= 0 Then 
    cantidad = saveImage.ScalarQuery() 
    End If 
End Sub 
+0

Вы не видите изображения в БД доступа, вы храните байты. Там очень много ошибок, BMP огромен, поэтому рассмотрим JPG, рассмотрим возможность сохранения только имени файла в MDF и фактического файла, чтобы избежать раздувания базы данных, избавиться от вашего мейнстрима и не использовать GetBuffer. Здесь есть много примеров, как это сделать. – Plutonix

+0

Спасибо большое. Я ищу информацию о ваших советах Предлагаете ли вы другой подход к автоматической печати? Gjc –

+0

Пожалуйста, ** избегайте раздувания больших BLOB данных ** в такой ограниченной базе данных, как Access. Вам лучше сохранить изображения в Файловой системе и сохранить ** пути ** (строки) в базе данных. –

ответ

0

Благодаря @Der Голема и @Lars Tech (Plutonix) для хороших ответов. I'have достиг половины своей цели таким образом:

Public Sub toBitMap(ByVal indice) 
    'Define un nuevo bitmap con las dimensiones del form 
    Dim miBitMap As New Bitmap(imprimir.Width, imprimir.Height) 
    ' Dibuja la imagen del form en un objetoBitmap 
    imprimir.DrawToBitmap(miBitMap, New Rectangle(0, 0, imprimir.Width, imprimir.Height)) 
    'definicion de nombre y path para archivos temporales 
    Dim tempImageName As String = "tmp" & indice & ".png" 
    Dim tmpImageAbsolutePath As String = Application.StartupPath & _ 
    "\data\" & tempImageName 
    'Creacion de nuevo png 
    miBitMap.Save(tmpImageAbsolutePath, ImageFormat.Png) 
    'Carga de paths a la base 
    Dim saveImage As imagenesTableAdapter = New imagenesTableAdapter 
    Dim a As String = saveImage.Insert(tempImageName) 
    If indice <= 1 Then 
     cantidad = saveImage.ScalarQuery() 
    End If 
End Sub 

Теперь я просто очистить папку TMP и дб.

** Просто нужно знать, как взять эти файлы (pics) в pdf для печати, но у меня есть google! : D

Смежные вопросы