![]() |
|
Модераторы: 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; |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [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. |