перенос данных из FlexGrid в TextBox. Access

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Стас
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 10.11.2006 (Пт) 21:47

перенос данных из FlexGrid в TextBox. Access

Сообщение Стас » 10.11.2006 (Пт) 22:02

Привет! Помогите мне, пожалуйста, а то я запутался!!

Значит, дело такое - на форме имеются flexgrid, связанный с базой данных Access, и несколько элементов textbox.
Нужно, чтобы при выделении мышкой строки в flexgride, соответствующая информация из соответствующего столбца выделенной строки помещалась в textbox'ы
Например, таблица состоит из столбцов "Имя", "Фамилия". Выделяем строку, и имя из этой строки помещаятся в TextBox1, а фамилия из этой строки - в TextBox2. Да, таблица, в перспективе, имеет неогранниченное кол-во строк.
Заранее спасибо, а то я замучился с этим :roll:

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 11.11.2006 (Сб) 12:32

Неограниченное число строк использовать ты не сможешь. Если грид не связанный, то предел будет около 2 тысяч строк, если связанный, то около 12 тысяч. Это первое.
Второе, научись нормально ставить задачи и таких вопросов задавать не будешь.
Lasciate ogni speranza, voi ch'entrate.

Стас
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 10.11.2006 (Пт) 21:47

Сообщение Стас » 11.11.2006 (Сб) 19:58

Хорошо, около 12 тысяч максимум, хотя фактически несколько сотен.
Задача нормально поставлена - что не понятно в вопросе? Мне нужно организовать связь между flexgrid и элементами textbox для вывода информации из flexgrid'а. И не нужно таких ответов. Есть чем помочь - помогите, другого не надо.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 11.11.2006 (Сб) 20:20

Что значит "например, таблица состоит из столбцов..."?
Почему столбцы называются именно так?
Почему первый столбец связан с Textbox1, а второй с Textbox2?
Сколько именно текстовых полей на форме? Где и как определяется, сколько их и какие они должны быть?
Где и как определяются имена столбцов?
Что подразумевается под выделением строки мышкой?
"соответствующая информация из соответствующего столбца" -- где здесь прописано соответствие?

Если ты составишь ответы на эти вопросы, то решение задачи станет очевидным.
Lasciate ogni speranza, voi ch'entrate.

Стас
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 10.11.2006 (Пт) 21:47

Сообщение Стас » 11.11.2006 (Сб) 23:24

Я понял, вы просто комплексно подходите к решению любой задачи. Мне просто нужен был общий пример. Опыта-то у меня всего лишь пара месяцев.
Хорошо, я сейчас подробнее распишу. Мне нужно сделать оболочку по резервированию авиабилетов. На этой форме, с которой я запутался, находятся: flexgrid, связаный через Data1 с базой данных Access AirPlans.mdb. Эта база данных состоит из столбцов: Город вылета, Город прилета, Авиакомпания, Номер рейса, Тип самолета, Дни выполнения рейса. Также на форме имеются 6 Textbox'ов, рядом с каждым из которых находится Label с Caption соответсвенно Город вылета, Город прилета, Авиакомпания, Номер рейса, Тип самолета, Дни выполнения рейса.
Ниже этих 6-ти Texbox'ов находятся 4 Tetbox'а с Label'ами: Ваше полное имя, Ваша Фамилия, Ваш номер паспорта, Кол-во билетов. Также есть 2 Listbox'a с Label'ами Класс места, Место для. И ещё есть 3 Checkbox'а с Label'ами Завтрак, Обед, Ужин. Ниже находятся Commandbutton с Caption Зарезервировать и Data2, связанная с БД Access Zarezerv_bilety.mdb. Таблица состоит из столбцов: Имя, Фамилия, Номер паспорта, Город вылета, Город прилета, Авиакомпания, Номер рейса, Тип самолета, Дни выполнения рейса, Класс места, Места для, Выбранное питание, Кол-во билетов
Идея такая - пользователь щелкает на стоке в flexgrid'е и в первых 6 Texbox'ах появляются значения из таблицы. Дальше он вводит в оставшихся Texbox'ах свои данные: Фамилию, Имя, № паспорта, Кол-во билетов. Выбирает возможные значения в Listbox'ах: в первом - эконом или бизнес, во втором - курящих или некурящих. Затем он отмечает нужное ему кол-во Checkbox'ов и нажимает кнопку Зарезервировать. Данные, отобразившиеся в первых 6-ти Textbox'ах, введеные в 4-ёх Textbox'ах пользователем, выбранные им в Listbox'ах и CheckBox'ах помещаются в таблицу Zarezerv_bilety.mdb
Вот такая задача.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 12.11.2006 (Вс) 0:17

Структура плохо продумана и неудобна для реализации.
Я бы советовал делать все в одном файле. И, разумеется, добавить ключевые поля.

Приблизительная структура:
Код: Выделить всё
Таблица CITY (города)
-------------
ID (счетчик)
NAME (текст)

Таблица FLY_TYPES (типы самолетов)
------------------
ID (счетчик)
NAME (текст)

Таблица RACES (рейсы)
--------------
ID (счетчик)
CITY_FROM (внешний ключ на CITY)
CITY_TO (внешний ключ на CITY)
COMPANY (внешний ключ или текст)
RACENUM (число или текст)
FLY_TYPE (внешний ключ на FLY_TYPES)
DAY1 ... DAY7 (логический)

Таблица TICKET_CLASSESS (тип билета)
------------------------
ID (счетчик)
NAME (текст)

Таблица TICKET_CATEGORIES (тип места)
--------------------------
ID (счетчик)
NAME (текст)

Таблица TICKET_STATES (статус билета)
----------------------
ID (число)
NAME (текст)

Таблица TICKETS (билеты)
----------------
ID (счетчик)
RACE_ID (внешний ключ на RACES)
STATE (внешний ключ на TICKET_STATES)
DATE (дата)
NAME (текст)
LASTNAME (текст)
INFO (текст)
COUNT (число)
CLASS (внешний ключ на TICKET_CLASSESS)
CATEGORY (внешний ключ на TICKET_CATEGORIES)
INCLUDE1 (логический)
INCLUDE2 (логический)
INCLUDE3 (логический)


Список рейсов будет связан с таблицей RACES.
Если вдруг по какой-то причине надо продублировать информацию по выбранной строке в текстовых полях, просто делаешь эти текстовые поля связанными с тем же источником данных, который выбран для таблицы. Естественно, они должны быть доступны только для просмотра, не для изменений.
При выборе рейса становятся доступными для заполнения другие поля. Связаны с рейсом они будут через RACE_ID.
Поле STATE отражает статус билета (новый, зарезервированный, проданный, закрытый, возвращенный и т.п.).
Lasciate ogni speranza, voi ch'entrate.

Стас
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 10.11.2006 (Пт) 21:47

Сообщение Стас » 12.11.2006 (Вс) 19:18

Да, это более масштабно.
Я только не понял насчет fleхgrid. В том, что вы предложили, он не спользуется, да?

Стас
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 10.11.2006 (Пт) 21:47

Сообщение Стас » 12.11.2006 (Вс) 19:19

Т.е. я не совсем понял, как это будет между собой взаимодействовать...

Стас
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 10.11.2006 (Пт) 21:47

Сообщение Стас » 12.11.2006 (Вс) 19:34

Вот, например, выбрана строка и информация дублируется в текстовом поле. А как это будет практически осуществляться? Ведь при выборе другой строки, информация в текстовых полях тоже должна изменяться. Как будет выглядить код? Вот это мне не понятно

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 13.11.2006 (Пн) 8:26

Когда выбрана строка, текстовые поля служат только для удобства пользователя. Информация из них не используется.
Используется поле ID выбранной строки (сохраненное в переменную, например), который будет записываться в поле RACE_ID при сохранении (резервировании) билета.
FlexGrid можно использовать, а можно не использовать, в описанном примере грид можно заменить на ListView, хотя грид удобнее.

Взаимодействовать все будет элементарно.
В гриде есть событие, RowColChange или что-то похожее. Оно возникает, когда меняется столбец или строка. В этом событии заполняются текстовые поля (либо из рекордсета, либо из грида, используя метод TextMatrix(), например) и запоминается ID текущей строки в переменную, например, в nCurrentRaceID. Кроме того, становятся доступными для редактирования текстовые поля резервирования билетов.
При нажатии на кнопку "Зарезервировать" проверяется заполнение этих полей, и если все нормально, в таблицу добавляется запись, с введенными оператором данными, полем RACE_ID равным nCurrentRaceID, полем STATE равным 1 (билет зарезервирован) и полем DATE равным Now().
Если используются связанные с источником данных элементы управления, можно обойтись без переменной nCurrentRaceID, вместо нее можно использовать невидимый элемент управления, связанный с полем RACE_ID.
Lasciate ogni speranza, voi ch'entrate.

Стас
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 10.11.2006 (Пт) 21:47

Сообщение Стас » 13.11.2006 (Пн) 19:10

Интересный вариант. Буду пробовать, спасибо.


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 1

    TopList