![]() |
|
|
![]()
|
|
| jigagun |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 17.1.2010 Репутация: нет Всего: нет |
Имеется база данных на аксессе, программа (пишется в Delphi 7).
В программе имеем 4-ре модуля: 1 - основной формы (Готовый), 2 - data source (готовый на основе ADO), 3 - отдельный поток по работе с gsm модемом (В разработке), обработка приходящих смс и запись их в базу данных, 4 - отдельный поток ftp-server (В стадии обдумывания). В главной форме отображены 3-и таблицы базы данных - только просмотр через ADOTable и тому подобное. Ну вроде все кратко описал. Вопрос задайте направления моим мыслям, чем пользоваться для организации запросов на поиск и изменение базы данных из не визуальных потоков смс и фтп. Если кто-то может предоставить пример, буду весьма признателен. Это сообщение отредактировал(а) jigagun - 21.1.2010, 18:44 |
|||
|
||||
| ~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 4 Всего: 68 |
jigagun, Тут все зависит от вопроса... Тебе нужно, по ФТП, СМС получить запрос.... или по этим же протоколам отправить результат?
Если только отправить/принять запрос, то постоянно висящий сервер, и клиенты которые отправляю ему какой нить пакет/меседж/... Если надо что то возвращать, то - ни ФТП, ни тем более СМС не предполагают работу с БД...для ФТП вполне можно получить запрос в виде строки и отправить сформированы *.ord. Для СМС, конечно это не реально.... |
|||
|
||||
| jigagun |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 17.1.2010 Репутация: нет Всего: нет |
~FoX~
Это программа диспетчерского пульта. По СМС и ФТП я получаю сообщения определенного формата, обрабатываю их и записываю в базу данных. Проблема возникла когда из потока не имеющего форму я попробовал запустить программно визуальный компонент DBTable, в принципе просто надо создать SQL запрос на поиск который будет возвращать данные не через DBTable, что бы не замучиваться с синхронизацией потоков по обращению к визуальным компонентам главной формы. Как-то вот так.... криво наверное излагаю свои мысли от недостатка опыта!!! |
|||
|
||||
| ~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 4 Всего: 68 |
||||
|
||||
| Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 2 Всего: 50 |
Не-а. Это не средство отображения. Для отображения TDBGrid ;) Это тоже наследник TDataset. Добавлено через 2 минуты и 22 секунды
Так вроде бы реализуй запросы в TThread, да и всё. Не должно возникнуть проблем. -------------------- |
|||
|
||||
| jigagun |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 17.1.2010 Репутация: нет Всего: нет |
Видимо в силу своей неопытности, у меня не получается четко сформулировать вопрос. Попробую подробнее описать программу. Программа состоит из 3-ёх потоков: 1. Главный - интерфейсный поток, где юзверь делает свои дела. в наличии 3 - TDBGrid в которых отображается информация из трех таблиц базы данных через DataModule 2. SMS поток (на базе TThread) - где проводиться через ком-порт запрос в джиэсем модем на получение смс -> далее смс разбивается по шаблону и должна вноситься в базу данных 3. FTP поток (на базе TThread) - то же самое что и в предыдушем только с txt файлами. так же имеется DataModule в состав которого входит: ADOConnection - 1 штука TADOTable связанная с DataSource - 3 штуки для каждой таблицы, которые отображаются на главной форме TADOQuery + DataSource - для организации SQL запросов. Вопрос в следующем: для проверки смс на ликвидность я должен сверить номер телефона с которого она пришла с номерами телефонов которые в базе данных. TADOQuery + DataSource - эта связка на сколько я понял работает только с визуальными компонентами. В поток SMS мне не удалось запихать TDBGrid, а делать на главной форме невидимую таблицу и дрючить её из потока неохота из-за гемора с синхронизацией. Вот и вопрос как организовать правильно запрос из потока? P.s. возможно решение очень простое, но мой малый опыт работы с базами данных (примерно последние 2-ве недели) еще слишком мал. Поэтому прошу подскажите как правильно использовать, то что я напихал или чем это заменить. А желательно ткните меня носом в ссылку на доходчиный FAQ или пример. |
|||
|
||||
| Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 2 Всего: 50 |
Для чего используется отображение данных? Каким образом? В какой момент это происходит по отношению к получению данных? Логику и причину использования TDBGrid и TADOTable уловить пока не могу. Данные видеть нужно? В какой момент? - Во время получения? -------------------- |
|||
|
||||
| jigagun |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 17.1.2010 Репутация: нет Всего: нет |
Логика проста, с начала рассмотрения данной части программы использовал литературу "Библия для программиста в среде Delphi"(автор Флеонов), там именно так строиться работа с базой данных через ADO. Данные должны отображаться всегда - на данный момент все три таблицы (в последующем одна с подставными полями), обновление при каждом изменении базы данных. Привожу часть использованной книги где рассмотрен пример на котором я основывался. Это сообщение отредактировал(а) jigagun - 22.1.2010, 12:49 Присоединённый файл ( Кол-во скачиваний: 5 )
1.rar 857,90 Kb |
||||
|
|||||
| Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 2 Всего: 50 |
jigagun,
Для твоей задачи решение совсем простое - данные получаешь в дополнительных потоках и заполняешь таблицы (используй TADOQuery для обновления таблиц), а в основном потоке используешь TADOQuery уже для отображения (TAdoQuery+TDataSource+TDBGrid). TADOConnection можно использовать один для всех запросов, но проще на каждый поток свой. -------------------- |
|||
|
||||
| jigagun |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 17.1.2010 Репутация: нет Всего: нет |
прежде чем сделать изменение в базе мне надо удостовериться, что номер с которого пришла смс есть в базе!!! Да это я и так уже делаю. Основная проблема я делаю запрос на поиск номера телефона в базе данных, возврат результата поиска, я лично из собственных скудных знаний могу сделать только в TDBGrid связав его с TADOQuery через TDataSource - т.е. добраться для сравнения я могу только через визуальный компонент - ВОТ ТУТ ПРОБЛЕМА как мне узнать результат запроса не используя визуальных компонентов, так как запихать в поток я их не могу а ставить на главную форму и мучиться с синхронизацией ПРОСТО Ж**А КАК НЕОХОТА. Это сообщение отредактировал(а) jigagun - 22.1.2010, 16:04 |
|||
|
||||
| Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 2 Всего: 50 |
Так ты что-ли вручную проверку делаешь? Ты бы логику коротко описал - действия шаг за шагом что тебе необходимо получить, какие шаги в программе. А то всё-таки непонятно в чём проблема. Давно бы уже посоветовали и решили, если бы ясно всё было. -------------------- |
|||
|
||||
| jigagun |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 17.1.2010 Репутация: нет Всего: нет |
короче просто помоги составить запрос к таблице так что бы он возвращал результат поиска в каком либо не визуальном виде, типа таблица в которой 3 столбца №тел | imei | фамилия делаем запрос на сверку существует ли номер в таблице. Самое главное получение результата поиска True - есть, False - нет или сам номер телефона или значение nil(null) |
||||
|
|||||
| Демо |
|
||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 2 Всего: 50 |
Ну вот небольшой пример из реальной программы:
Здесь динамически формируется параметризованный запрос для проверки, чуществует ли телефонный номер в таблице БД. Если номер найден, то он оттуда удаляется (у тебя другие действия, конечно). -------------------- |
||||||||
|
|||||||||
| jigagun |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 17.1.2010 Репутация: нет Всего: нет |
Огромное спасибо... вот именно то, что я искал!!!!
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |