Рейтинг:
7
OriginalGriff
Начните с того, что не проглотите свое исключение: когда вы используете пустой улов и не делаете с ним ничего полезного, вы отбрасываете всю информацию, необходимую для выявления проблемы и ее решения.
Сделать это:
try
{
...
}
catch (Exception ex)
{
... log the exception, display it in a message box,
... or stuff it on your web page - we have no idea
... what environment you are working in
axAcroPDF1.src = null;
}
Затем, когда код будет запущен, вы можете посмотреть на исключение и, надеюсь, увидеть, что происходит не так. Но без этого вы работаете в темноте...
Goran Bibic
Идея есть:
Если у вас есть pdf, чтобы показать его в axAcroPDF1
Если у вас нет axAcroPDF1.src = null;
Какая-то помощь?
OriginalGriff
И что, по-вашему, происходит в данный момент?
Вы читали что-нибудь из того, что я написал?
Вы пробовали использовать отладчик?
Goran Bibic
Я читаю, я пытаюсь...но результата нет...Мне нужна помощь, чтобы решить эту проблему... Спасибо
Goran Bibic
Я попробую это сделать
byte[] ap = (byte[])(documentsDataGridView.SelectedRows[0].Ячейки["pdf_file"].Ценность);
MemoryStream ms = новый MemoryStream(ap);
ms.Position = 0;
Файл.WriteAllBytes(@"D:\mypdf.pdf", Мисс Тоаррей());
Процесс.Старт(@"D:\mypdf.pdf");
Не работают
OriginalGriff
:вздыхать:
"Это не работает", вероятно, самый бесполезный отчет о проблеме, который мы получаем - и мы получаем его много. Она ничего не говорит нам о том, что происходит или когда это происходит.
Итак, расскажите нам, что он делает, чего вы не ожидали, или не делает, что вы сделали.
Расскажите нам, что вы сделали, чтобы это произошло.
Сообщайте нам о любых сообщениях об ошибках.
Goran Bibic
Теперь у меня есть ошибка...как разместить фотографию?
OriginalGriff
Зачем мне изображение сообщения об ошибке?
Скопируйте и вставьте текст...
Goran Bibic
Следующее исключение произошло в DataGridView
Система.Значение параметра недопустимо. в системе.Рисование.Изображение.FromStream(Stream stream, Boolean validateImageData)
Это короткий текст ошибки. Но зачем рисовать изображение, когда я вставляю PDF в базу данных и хочу получить pdf в axAcroPDF1
Я попробую это сделать
byte[] ap = (byte[])(documentsDataGridView.SelectedRows[0].Ячейки["pdf_file"].Ценность);
MemoryStream ms = новый MemoryStream(ap);
ms.Position = 0;
Файл.WriteAllBytes(@"C:\PDFs.pdf", Мисс Тоаррей());
Процесс.Старт(@"C:\PDFs.pdf");
Goran Bibic
Не работа это ошибка
OriginalGriff
Это указывает на то, что существует проблема с файлом. Но... У нас нет доступа ни к вашей базе данных, ни к остальному вашему коду.
Первое, что нужно проверить, - это код, который вставляет файл в БД: используйте его для вставки известного хорошего PDF-файла, затем извлеките данные и сохраните их в виде файла. Сверьте этот файл с оригиналом: они одного размера? Правильно ли открывается новая копия в программе чтения PDF-файлов?
Если он проходит эти тесты, вы можете начать смотреть на код, который получает ваши данные, и пытается открыть его. Но не раньше!
Goran Bibic
Запрос таблицы
/****** Объект: таблица [dbo].[документы] Дата Написания Сценария: 2.8.2018. 09:25:21 ******/
УСТАНОВИТЕ ANSI_NULLS НА
ГО
УСТАНОВИТЕ QUOTED_IDENTIFIER НА
ГО
Создайте таблицу [dbo].[документы](
[id] [int] IDENTITY(1,1) NOT NULL,
[число] [int] NULL,
[count_number] [varchar](255) NULL,
[label] [varchar](255) NULL,
[партнер] [varchar](255) NULL,
[tax_number] [varchar](255) NULL,
[дата] [дата] NULL,
[file_location] [varchar](255) NULL,
[pdf_file] [varbinary](max) NULL,
Ограничение [PK_documents] первичный ключ КЛАСТЕРИЗОВАН
(
[id] ASC
)С ПОМОЩЬЮ (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) НА [ОСНОВНОЙ] ВЫРАЖЕНИЯХ TEXTIMAGE_ON [ПЕРВИЧНЫЙ]
ГО
Goran Bibic
Вставить в
частный недействительными методе button2_click(объект отправителя, EventArgs в е) //сохранение //сними
{
byte[] filedata = null;
MemoryStream ms = Новый Поток памяти();
filedata = ms.GetBuffer();
axAcroPDF1.src = локальное кодирование.GetString(ms.Метод toArray());
если (count_numberTextBox.Включено == правда)
{
если (строка.IsNullOrEmpty(idTextBox.Text))
{
using (SqlConnection openCon = new SqlConnection(cs))
{
строки saveStaff = "объявить @maxNo целое число = 0 выберите @maxNo = функция isnull(Max(число), 0) От на [dbo].[документы]; установить @maxNo=@maxNo+1; вставить в dbo.documents (number, count_number, label, partner, tax_number, date, file_location, pdf_file) значения (@maxNo,@count_number,@label,@partner,@tax_number,@date,@file_location,@pdf_file)";
используя (sqlcommand, который querySaveStaff = новая команда sqlcommand(saveStaff))
{
querySaveStaff.Соединение = openCon;
querySaveStaff.Parameters.Add("@count_number", SqlDbType.VarChar, 255).Value = count_numberTextBox.Text;
querySaveStaff.Parameters.Add("@label", SqlDbType.VarChar, 255).Value = labelTextBox.Text;
querySaveStaff.Parameters.Add("@partner", SqlDbType.VarChar, 255).Value = partnerComboBox.Текст;
querySaveStaff.Parameters.Add("@tax_number", SqlDbType.VarChar, 255).Value = tax_numberTextBox.Text;
querySaveStaff.Parameters.Add("@date", SqlDbType.Date).Value = dateDateTimePicker.Текст;
querySaveStaff.Parameters.Add("@file_location", SqlDbType.VarChar, 255).Value = file_locationTextBox.Text;
//querySaveStaff.Parameters.Add("@pdf_file", SqlDbType.VarChar, 255).Value = partner_typeComboBox.Текст;
querySaveStaff.Parameters.AddWithValue ("@pdf_file", SqlDbType.VarBinary).Значение = данным;
openCon.Открыть();
querySaveStaff.Метод executenonquery();
openCon.Закрывать();
dateDateTimePicker.Включен = ложь;
count_numberTextBox.Включен = ложь;
file_locationTextBox.Включен = ложь;
labelTextBox.Включен = ложь;
partnerComboBox.Включен = ложь;
tax_numberTextBox.Включен = ложь;
кнопки button3.Включен = ложь;
button4.Включен = ложь;
}
}
}
еще
{
using (SqlConnection openCon = new SqlConnection(cs))
{
строки saveStaff = "ДБО обновление.комплект документов count_number=@count_number, ярлык=@ярлык, партнер=@партнером, tax_number=@tax_number, дата=@дата, file_location=@file_location, pdf_file=@pdf_file где ID= " + idTextBox.Текст;
используя (sqlcommand, который querySaveStaff = новая команда sqlcommand(saveStaff))
{
querySaveStaff.Соединение = openCon;
querySaveStaff.Parameters.Add("@count_number", SqlDbType.VarChar, 255).Value = count_numberTextBox.Text;
querySaveStaff.Parameters.Add("@label", SqlDbType.VarChar, 255).Value = labelTextBox.Text;
querySaveStaff.Parameters.Add("@partner", SqlDbType.VarChar, 255).Value = partnerComboBox.Текст;
querySaveStaff.Parameters.Add("@tax_number", SqlDbType.VarChar, 255).Value = tax_numberTextBox.Text;
querySaveStaff.Parameters.Add("@date", SqlDbType.Date).Value = dateDateTimePicker.Текст;
querySaveStaff
OriginalGriff
Что ж.
Вот в чем твоя проблема.
Используйте отладчик и скажите мне точно, что у вас есть в filedata, когда вы выполняете эту строку:
querySaveStaff.Parameters.AddWithValue ("@pdf_file", SqlDbType.VarBinary).Значение = данным;
Затем просмотрите свой код и скажите мне, почему у вас это есть ...
Goran Bibic
Если я хорошо найду ошибку
Исключение: системы.UnauthorizedAccessException' in mscorlib.dll
OriginalGriff
А до этого, что вы нашли в filedata?
Goran Bibic
-ДМС 2018.EXE' (CLR v4.0.30319: DefaultDomain): загружен 'C:\WINDOWS\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll". Пропущенные символы загрузки. Модуль оптимизирован, и включена опция отладчика "только мой код".
'ДМС 2018.EXE' (среда CLR версии 4.0.30319: Домен_по_умолчанию): загрузил C:\Users\Bibic Горан\источник\репозитории\ДМС 2018\ДМС 2018\бин\отладки\ДМС 2018.exe'. Символы загружены.
'ДМС 2018.EXE' (среда CLR версии 4.0.30319: ДМС 2018.exe): C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System загружен '.Окна.Формы\v4.0_4.0.0.0__b77a5c561934e089\система.Окна.Forms.dll". Пропущенные символы загрузки. Модуль оптимизирован, и включена опция отладчика "только мой код".
'ДМС 2018.EXE' (среда CLR версии 4.0.30319: ДМС 2018.exe): загрузил C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.dll'. Пропущенные символы загрузки. Модуль оптимизирован, и включена опция отладчика "только мой код".
'ДМС 2018.EXE' (среда CLR версии 4.0.30319: ДМС 2018.exe): C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System загружен '.Чертеж\v4.0_4.0.0.0__b03f5f7f11d50a3a\система.Drawing.dll". Пропущенные символы загрузки. Модуль оптимизирован, и включена опция отладчика "только мой код".
'ДМС 2018.EXE' (среда CLR версии 4.0.30319: ДМС 2018.exe): C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System загружен '.Конфигурация\v4.0_4.0.0.0__b03f5f7f11d50a3a\система.Configuration.dll". Пропущенные символы загрузки. Модуль оптимизирован, и включена опция отладчика "только мой код".
'ДМС 2018.EXE' (среда CLR версии 4.0.30319: ДМС 2018.exe): C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System загружен '.Core\v4.0_4.0.0.0__b77a5c561934e089\System.Core.dll". Пропущенные символы загрузки. Модуль оптимизирован, и включена опция отладчика "только мой код".
'ДМС 2018.EXE' (среда CLR версии 4.0.30319: ДМС 2018.exe): загружается 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Xml\v4.0_4.0.0.0__b77a5c561934e089\System.Xml.dll'. Пропущенные символы загрузки. Модуль оптимизирован, и включена опция отладчика "только мой код".
'ДМС 2018.EXE' (среда CLR версии 4.0.30319: ДМС 2018.exe): C:\WINDOWS\Microsoft.Net\assembly\GAC_32\System загружен '.Data\v4.0_4.0.0.0__b77a5c561934e089\System.Data.dll". Пропущенные символы загрузки. Модуль оптимизирован, и включена опция отладчика "только мой код".
'ДМС 2018.EXE' (среда CLR версии 4.0.30319: ДМС 2018.exe): C:\WINDOWS\Microsoft.Net\assembly\GAC_32\System загружен '.Транзакции\v4.0_4.0.0.0__b77a5c561934e089\система.Transactions.dll". Пропущенные символы загрузки. Модуль оптимизирован, и включена опция отладчика "только мой код".
'ДМС 2018.EXE' (среда CLR версии 4.0.30319: ДМС 2018.exe): C:\WINDOWS\Microsoft.Net\assembly\GAC_32\System загружен '.EnterpriseServices\v4.0_4.0.0.0__b03f5f7f11d50a3a\система.EnterpriseServices.dll". Пропущенные символы загрузки. Модуль оптимизирован, и включена опция отладчика "только мой код".
'ДМС 2018.EXE' (среда CLR версии 4.0.30319: ДМС 2018.exe): C:\WINDOWS\Microsoft.Net\assembly\GAC_32\System загружен '.EnterpriseServices\v4.0_4.0.0.0__b03f5f7f11d50a3a\система.Услуги предприятий.Wrapper.dll". Пропущенные символы загрузки. Модуль оптимизирован, и включена опция отладчика "только мой код".
'ДМС 2018.EXE' (среда CLR версии 4.0.30319: ДМС 2018.exe): C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Runtime загружен '.Кэширование\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Runtime.Caching.dll". Пропущенные символы загрузки. Модуль оптимизирован, и включена опция отладчика "только мой код".
'ДМС 2018.EXE' (среда CLR версии 4.0.30319: ДМС 2018.exe): загружается 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Data.DataSetExtensions\v4.0_4.0.0.0__b77a5c561934e089\System.Data.DataSetExtensions.dll'. Пропущенные символы загрузки. Модуль оптимизирован, и включена опция отладчика "только мой код".
'ДМС 2018.EXE' (среда CLR версии 4.0.30319: ДМС 2018.exe): загрузил C:\Users\Bibic Горан\источник\репозитории\ДМС 2018\ДМС 2018\бин\отладки\сборку axinterop.AcroPDFLib.dll". Модуль был построен без символов.
'ДМС 2018.EXE' (среда CLR версии 4.0.30319: ДМС 2018.exe): C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System загружен '.Цифры\v4.0_4.0.0.0__b77a5c561934e089\система.Numerics.dll". Пропущенные символы загрузки. Модуль опт
OriginalGriff
Если вы не собираетесь читать ничего, что я печатаю, есть ли смысл в том, чтобы вы отправили вопрос?
Goran Bibic
Я пытаюсь найти и просто это в отладчике. Где искать ошибки?