![]() |
|
Модераторы: gambit |
![]()
|
|
| shark1 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 274 Регистрация: 10.11.2007 Репутация: нет Всего: нет |
Как сделать такой DataBindings.Вобщем есть программа кот.работает с видео.Работает след.образом.
На складе стоит камера,например пришол один и тот же тавар(например дрель),у него один и тотже серийный номер только какие то детали отличаются.Теперь рабочий вносит в прогу сер.номер и фотографирует деталь(одну,затем другую и т.д).Теперь все это дело соответственно помещается в DB.Вопрос ,как например во время поиска если я набираю сер.номер,и у него есть две или пять фотографий(из db),как одновременно показать все сразу.У меня сейчас получается так.В поиске ввожу сер.номер в базе происходит сортировка(соответственно остаётся нужный сер.номер)но вот как сделать чтоб показывались сразу все фото(потому что,сейчас показывается фото из строки на кот.стоит курсор в db).Зарание спасибо. |
|||
|
||||
| thomas |
|
||||
![]() Доцент... почти ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1385 Регистрация: 3.10.2006 Где: " Сказочное королевство" Репутация: 35 Всего: 65 |
shark1,
Приветствую. Решение одно, нормализация БД. Твои фото должны храниться в отдельной таблице. Каждая запись в которой имеет уникальный номер(первичный ключ, который лучше сделать автонумерационным) и включает в себя поле с фотографией (массив байтов или адрес файла с фото), а так же поле с указанием на номер детали с которой сделана фотография. В таблице деталей номер будет являться первичным ключом таблицы, а в таблице фотографий это будет вторичный ключ. Тогда получиться, что каждая твоя деталь может иметь много фотографий, которые храняться в таблице фотографий. А что бы получить эти фото для определенной детали пишем команду на выборку с условием отбора
Эта команда выдаст тебе все имеющиеся фото этой детали. А уж как ты их будешь юзверю показывать это твоя проблема. Добавлено через 3 минуты и 18 секунд
Например выведи все фото этой детали в DataGridView с прокруткой. -------------------- Крепко жму горло, искренне ваш Thomas. (С)vingrad Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну! Проблемы негров шерифа не волнуют. |
||||
|
|||||
| shark1 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 274 Регистрация: 10.11.2007 Репутация: нет Всего: нет |
Спасибо,я тоже начал подумывать о второй таблице,но вот вариант с DGV мне больше нравится,ведь сейчас я и так вывожу данные в DGV,а можно как то сделать размер ячейки в DGV под размер фотографии,а может можно как то поместить фото например рядом с DGV в ListBox или в ListView.Спасибо.
|
|||
|
||||
| thomas |
|
|||
![]() Доцент... почти ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1385 Регистрация: 3.10.2006 Где: " Сказочное королевство" Репутация: 35 Всего: 65 |
shark1,
Одно к другому не относиться. Отдельная таблица для фотографий по любому нужна. Так как ты хочешь для одной детали несколько фотографий иметь. -------------------- Крепко жму горло, искренне ваш Thomas. (С)vingrad Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну! Проблемы негров шерифа не волнуют. |
|||
|
||||
| shark1 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 274 Регистрация: 10.11.2007 Репутация: нет Всего: нет |
Понял ,завтра попробую создам новую таблицу.Спасибо.
|
|||
|
||||
| thomas |
|
|||
![]() Доцент... почти ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1385 Регистрация: 3.10.2006 Где: " Сказочное королевство" Репутация: 35 Всего: 65 |
Иначе у тебя в основной таблице получаются для одной детали несколько идентичных записей, но с разными фотографиями.
А такого не может быть по определению. -------------------- Крепко жму горло, искренне ваш Thomas. (С)vingrad Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну! Проблемы негров шерифа не волнуют. |
|||
|
||||
| shark1 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 274 Регистрация: 10.11.2007 Репутация: нет Всего: нет |
А ка насчет увеличить ячейку в DGV до размера фото ? чтоб можно было прямо в DGV просматривать фото.Спасибо.
|
|||
|
||||
| shark1 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 274 Регистрация: 10.11.2007 Репутация: нет Всего: нет |
Сдрасте всем Возвращаясь к моему вопросу,что то я совсем запутался.Я разделил таблицу и сделал две:
1)ItemsNumber. в ней: CompanyName-Text ItemNumber -Text(это номер детали) InsertDate-Text Remarks -Text ID - AutoNumber(key) 2)Photos в ней: ItemNumber -Text(это номер детали) Photo - OLE Object Link - Text IDPhoto-AutoNumber(key) А теперь подскажите как их связать.Пробую :
|
|||
|
||||
| thomas |
|
|||
![]() Доцент... почти ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1385 Регистрация: 3.10.2006 Где: " Сказочное королевство" Репутация: 35 Всего: 65 |
shark1,
Привествую. Если твои детали имеют уникальные номера, то убери из таблицы ItemsNumber (таблица названа по тарабарски А потом по нему связывай таблицы детали <=> фото А для отображения фотографий твоих деталей можно сделать так: - первый грид заполняешь списком деталей и их данными; -при выделении нужной детали, заполняй вторую таблицу в Датасет фотками этой детали (запрос к базе с параметром WHERE в котором указываешь номер выбранной в гриде детали); -вот эту вторую таблицу указываешь как DataSource для второго грида, в котором сделай ячейки для отображения фото. Или как вариант, создавай динамически нужное кол-во PictureBox-ов и выводи в них фото из таблицы. Запрос на фото
это запрос с параметром. Присваиваешь параметру значение номера детали и получишь, не все фото всех деталей, а только нужной. Добавлено через 3 минуты и 18 секунд ЗЫ для именования таблиц в БД лучше использовать простое правило. Именовать именем существительным во множественном числе, которое определяет содержание таблицы. Добавлять префикс tbl, тогда в коде программы будешь четко знать где имя таблицы из БД, а где имя таблицы из ДатаСет (именование без префиксов) tblPhotos в БД, photos в ДатаСет. -------------------- Крепко жму горло, искренне ваш Thomas. (С)vingrad Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну! Проблемы негров шерифа не волнуют. |
|||
|
||||
| shark1 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 274 Регистрация: 10.11.2007 Репутация: нет Всего: нет |
thomas здраствуй.Вот так изменил DB.
Теперь: 1)tbl_ItemsNumber. в ней: CompanyName-Text ItemNumber -Text(key) InsertDate-Text Remarks -Text 2)tbl_Photos в ней: ItemNumber -Text(это номер детали) Photo - OLE Object Link - Text IDPhoto-AutoNumber(key) затем пытаюсь связать две таблици но что то я так намудрил,что невыходит .DataBindings работает только на первую таблицу а если во второй функции открываю DataBindings,то он пишет что два DataBindings не может быть.Подскажи плиззз где я намудрил если разберёшся в моих каракулях.Зарание огромное спасибо.
|
|||
|
||||
| akizelokro |
|
|||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: нет Всего: 5 |
я бы сделал немножко по-другому.
1.Companies id - biging (autoinc) primary key CompanyName 2.Items id - biging (autoinc) primary key ItemNumber nvarchar(50) - еще нужно будет создать уникальный индекс Company_Id (ссылка на id из Companies) InsertDate - smalldatetime Remarks - nvarchar(max) 3.Photos id - biging (autoinc) primary key Items_Id (ссылка на id из Items) Photo - OLE объект или BLOB, если ты хочешь помещать фотки в базу Thumbnail -OLE объект или BLOB, если ты хочешь помещать фотки в базу Комментарии. У меня привычка ставить первичные ключи целочисленными и autoincrement (99%). Я, возможно неправильно, считаю, что такой подход по крайней мере не замедляет производительность БД. Поэтому (только из-за своих привычек) я изменил вариант thomas'а c таблицей Items. Я выбросил из Photos поле Link, потому что я не знаю его назначение. Если это ссылка, то его можно добавить в Items Я добавил в таблицу Photos поле Thumbnail, потому что это логично и просто принято. Тебе просто нужно будет при добавлении фото сформировать на лету его thumbnail не больше заданного размера, которые ты потом и будешь выводить в датагриде. Я добавил таблицу Companies. Это всем должно быть понятно зачем. Это сообщение отредактировал(а) akizelokro - 2.5.2008, 13:04 -------------------- a = a + b; b = a - b; a = a - b; |
|||
|
||||
| shark1 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 274 Регистрация: 10.11.2007 Репутация: нет Всего: нет |
Спасибо.Базу я переделал.Link это путь к фото на диске(прога работает с видео и по линку забирает фото в базу).
Теперь попорядку.Вот например рабочий код :
private void txt_Find_TextChanged(object sender, EventArgs e) { if (chb_Items.Checked == true) { dataTable.DefaultView.RowFilter = "ItemNumber LIKE '" + txt_Find.Text + "%'"; } },показывает по одному фото в pictureBox1,мне нужно без потерь(желательно и чтоб я не сильно запутался)как мне его обновить под новую задачу.Зарание спасибо. |
|||
|
||||
| akizelokro |
|
|||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: нет Всего: 5 |
Я правильно понимаю, что ты не только выводишь поля в DataGridView, но и дублируешь их в дополнительных TextBox и PictureBox?
-------------------- a = a + b; b = a - b; a = a - b; |
|||
|
||||
| shark1 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 274 Регистрация: 10.11.2007 Репутация: нет Всего: нет |
Да я делаю бандинг,и например как только я нахожу нужный номер,в техст боксах появляется соответствующая информация и фото появляется в picBox
|
|||
|
||||
| akizelokro |
|
|||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: нет Всего: 5 |
Оставь один PictureBox1, с текстбоксами ты наживешь геморой на месяц-два. их удали, а редактируй их значения в датагриде. Там куча закавык, притом не сразу видных. Например, добавление новой записи.
PictureBox1 прогружай по RowEnter (CellEnter вызывается даже когда ячейка меняется в пределах одной строки). TextChanged не обрабатывай, оно вызывается после каждого символа чтоли(проверь в дебаггере) и ты можешь гонять фильтры, еще и не успев набрать текст для поиска. Это сообщение отредактировал(а) akizelokro - 2.5.2008, 15:11 -------------------- a = a + b; b = a - b; a = a - b; |
|||
|
||||
| shark1 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 274 Регистрация: 10.11.2007 Репутация: нет Всего: нет |
В начальном варианте это работало так.Был один DGV,например ввожу номер и в picBox показывается фото,а в textBox-ы показывается вся информация.Теперь задача таже только нужно например если будет один и тот же номер с несколькими фотографиями чтоб показ. например в ListBox или в ListView все фото у этого номера.(см.фаил).
Присоединённый файл ( Кол-во скачиваний: 6 )
untitled1.JPG 116,34 Kb |
|||
|
||||
| akizelokro |
|
|||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: нет Всего: 5 |
ListView. По RowEnter его список рисунков очищаешь и заливаешь новый сообразно выбранному номеру детали (пишешь запрос ручками или создашь новый TableAdapter с парметром, через который передается значение ид_строки в родительской таблице, дальше выборка по всем рисункам и расфасовка в ListView, также вот именно здесь ты можешь добавить TextBoxes для таблицы Photo. Но что плохо, много придется кодить ручками. Есть вторая схема, делать две датагриды, одну для Items, вторую для Photo, где саму выбранную фотку отображать в PictureBox. Здщесь кодить поменьше, но все равно придется).
Кстати, воспользуйся thumbnail'ами. Оно поприкольней смотреться будет -------------------- a = a + b; b = a - b; a = a - b; |
|||
|
||||
| shark1 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 274 Регистрация: 10.11.2007 Репутация: нет Всего: нет |
плиззз кинь немного кода как с воспользуйся thumbnail'ами.Зарание спасибо.
|
|||
|
||||
| akizelokro |
|
|||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: нет Всего: 5 |
функция Image.GetThumbnailImage
ты можешь на лету делать thumbnail, а если хочешь сэкономить на ресурсах, то ложить их в базу данных, а при необходимости брать оттуда -------------------- a = a + b; b = a - b; a = a - b; |
|||
|
||||
| shark1 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 274 Регистрация: 10.11.2007 Репутация: нет Всего: нет |
у меня еше нет столько опыта мне нужна помощь.Спасибо.Если не хочеш сдесь,можно в личную почту.Спасибо.
|
|||
|
||||
| shark1 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 274 Регистрация: 10.11.2007 Репутация: нет Всего: нет |
Вот мне бы что то такое сделать.
http://www.c-sharpcorner.com/UploadFile/ma.../dbinDlinq.aspx Подскажите плизз,как мне такое прикрутить к моему проекту,чтоб можно было прямо в DGV видеть фото.Спасибо. |
|||
|
||||
| shark1 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 274 Регистрация: 10.11.2007 Репутация: нет Всего: нет |
Вобщем может кому пригодиться ,я добавил в код эти две строки:
|
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Базы данных под .NET | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |