Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Базы данных под .NET > Проблема с работой Image(BLOB) и Access. |
Автор: shark1 4.1.2008, 19:46 | ||
Застрял ни как не получается работать с image. Пытаюсь добавить картинку в Access, вроде все срабатывает,а вот дальше ни как.Как например по ID вытаскивать данные и соответствующую картинку.Посмотрел весь форум и в google поискал но что то ни как.Подскажите плиззз.Код Прилагается.Зарание огромное спасибо.
|
Автор: shark1 6.1.2008, 12:07 |
Я конечно понимаю что код выглядет ужастно,но всетаки может кто нибудь подскажет как же всетаки сделать такое.Неужели ни кто не делал ни когда тел. книгу или список для рабочих или еще что нибудь.Подскажите плизззз,очень нужно.Зарание спасибо. |
Автор: mr.DUDA 6.1.2008, 16:08 |
В чём проблема-то? Читаем картинку из БД в массив byte[], создаём через Image.FromStream(new MemoryStream(array)). |
Автор: shark1 8.1.2008, 16:01 | ||
Уважаемый mr.DUDA с этим делом вродебы разобрался.Теперь проблемма в следующем,значит имеется две формы.Первая главная(на ней находится dataGridView1 и прикрутил сюдаже DataBindings),вторая форма new worker(на ней имеются все текст боксы и пиктчер бокс).Вродебы все просто но вот застрял на этом.Во время когда заносятся данные в базу данных если я не указываю путь к фотографии то вылетает ошибка на этой строке :
Текст такой:System.ArgumentException: The path is not of a legal form. Подскажите плизз как это обойти чтоб была возможность сохронять данные нового рабочего,а после можно будет добавить фото. И еще одна проблемма.Например просто как вариант нажимаю на кнопку захожу на форму(new worker)не чего не изменяю закрываю форму и вылетает ошибка на главной форме: System.ArgumentException: This causes two bindings in the collection to bind to the same property. Parameter name: binding не понимаю откуда берется второй binding. Подскажите плиззз,зарание огромное спасибо. |
Автор: mr.DUDA 8.1.2008, 21:16 |
Судя по сообщению об ошибке, в txtImagePath нет пути к файлу или путь в некорректном формате. |
Автор: shark1 9.1.2008, 13:15 |
Уважаемый mr.DUDA и с этим я уже разобрался.Проблемма осталось только почему просто нажимаю на кнопку захожу на форму(new worker)не чего не изменяю закрываю форму и вылетает ошибка на главной форме: System.ArgumentException: This causes two bindings in the collection to bind to the same property. Parameter name: binding не понимаю откуда берется второй binding. Подскажите плиззз,зарание огромное спасибо. |
Автор: mr.DUDA 9.1.2008, 14:13 |
По приведённому выше коду ничего о биндингах понять нельзя. Какие контролы на что байндятся ? |
Автор: shark1 9.1.2008, 15:17 | ||
Уважаемый mr.DUDA обычные текст боксы
|
Автор: mr.DUDA 10.1.2008, 11:40 |
Походу, если GetImagesFromDatabase() вызвать два раза, тогда добавится ещё один биндинг на каждый контрол. Не может быть такого? |
Автор: shark1 13.1.2008, 09:35 | ||||||
Уважаемый mr.DUDA эта функция вызывается только один раз :(,но даваыте на время это оставим,я убрал на время DataBindings.Теперь другая вылезла проблемка,есть button Delete при нажатии :
и вот на этом :
|
Автор: tol05 13.1.2008, 13:32 | ||
Уважаемыйshark1, Вы извините, что я влезаю не в свое дело, мешаю Вашей дискуссии, но ИМХО Вы непоследовательны в своих действиях. С биндингом разбираться, так с биндингом. Если вываливается Exception, то у него есть замечательное свойство Exception.StackTrace, которое как раз и говорит какой метод вызвал метод, который вызвал метод, вызвавший метод, который (наконец-то!!!!) вызвал второй биндинг. Когда Вы найдете этот метод и сточку кода, вызывающую исключение, поставтьте на эту строчку брейкпоинт. Когда при отладке выполнение остановится на этой строчке, посмотрите куда делается биндинг, к какому контролу и есть ли у него уже такой биндинг. Т.о. Вы определите оба Ваших биндинга. По поводу второй ошибки. У this.adapter1 установлена DeleteCommand? Я имею в виду есть где-нибудь код
? |
Автор: thomas 13.1.2008, 13:34 | ||||
shark1, Приветствую. Сообщение говорит что, нет указания на обьект, что обьект не существует. Попробуй показать твою команду на удаление в massagebox, сразу после
текстбокс должен быть заполнен. Второе, если используешь конструкцию try catch то неплохо и последнюю часть использовать тоже - finally и закрытие соединения помещать туда, а не в catch.
этот код гарантированно закроет соединение. ЗЫ поддерживаю tol05, команда должна быть сначала создана, а потом ей присваиваются значения. |
Автор: shark1 13.1.2008, 22:06 |
Уважаемые tol05 и thomas ,спасибо вам за ваши замечания,постарался все исправить.Спасибо.Теперь по проблеммам. То что касается биндинга,ошибка выподает на первой строке DataBindings.На : this.txt_WorkNumber.DataBindings.Add("Text", dataTable, "WorkNumber", true, DataSourceUpdateMode.OnPropertyChanged);кстати сказать если я ставлю брек поинт на эту строку то даже при нажатии на кнопку connect в коде кот.находится и this.txt_WorkNumber.DataBindings.Add и т.д сразу вылетает ошибка :( а без брек поинт все работает :( и tol05 я что то по своей молодости не нашел Exception.StackTrace. Насчет delete .После того как я по вашей подсказке подправил код,теперь вылетает такая ошибка :Data type mismatch in criteria expression. Зар4ание спасибо за вашу помощ. |
Автор: mr.DUDA 14.1.2008, 10:22 |
Модератор: Пожалуйста, один топик - один вопрос. Сначала хотя бы пробуем разобраться самостоятельно, если не получается формулируем конкретный вопрос в виде отдельной темы. Спасибо. |
Автор: shark1 14.1.2008, 10:59 |
Уважаемый mr.DUDA договорились.Тогда вопрос по теме DataBindings,сам старался очень но без вашей помощи ни как.Поэтому прошу помощи.Спасибо. |
Автор: tol05 14.1.2008, 12:14 |
http://msdn2.microsoft.com/en-us/library/system.exception.stacktrace.aspx а вот так это выглядит в жизни ![]() по поводу биндинга. Сколько раз может вызываться метод GetImagesFromDatabase()? При каждом его вызове он будет пытаться добавить новый биндинг... Нужно проверять, есть ли уже такой биндинг у контрола или нет. Если есть - то или не добавлять новый, или удалять старый. |
Автор: shark1 14.1.2008, 13:47 |
Спасибо тебе огромное,какой я ишак,сразу нашел ошибку.Спасибо тебе.Следующий вопрос будет в новом топике,а то mr.DUDA ругается.Еще раз спасибо огромное. |