![]() |
|
![]() ![]() ![]() |
|
Valior |
|
|||
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 24.5.2006 Репутация: нет Всего: нет |
Имеется, база данных состоящая из 3 файлов dbf
1й Файл имеет структуру в 35 полей. Нужны только 3.(номер заказа, дата и телефон) 2й 3й имеют структуру в 2 поля (номер заказа и текст заказа.) Соответственно Номер заказа во всех файлах одинаковое(названия полей только разные). Так же есть текстовый файл.(телефон и текст заказа) необходимо посредством дельфи, организовать сравнение содержимого текстового файла с данной базой за определенный период. Подскажите с чего начать7 Что лучше использовать и прочее? |
|||
|
||||
Valior |
|
|||
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 24.5.2006 Репутация: нет Всего: нет |
Подскажите, как удалить ненужные столбцы, и обьединить 3 файла в один, но чтобы поле номер заказа было одно?
|
|||
|
||||
Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 35 Всего: 130 |
Можно ADO.
Перебором строк только. Но вообще данную задачу я бы решал на фоксе. -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
chip_and_dayl |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 603 Регистрация: 22.4.2007 Где: Украина, Киев Репутация: 2 Всего: 9 |
Под обьединением файлов я так понял подразумевается - обьединение трех таблиц? Тады inner в помощь
А под удалением я так понял, что нужно просто вывести из всей кучи три поля? Тогда перечисление полей в Select поможет -------------------- Фсё будет хорошо!!! |
|||
|
||||
Valior |
|
|||
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 24.5.2006 Репутация: нет Всего: нет |
С ним вообще дела не имел, даже не представляю что это за зверь. Обьединение, ну да, думаю что если привести ее к виду: дата номер заказа телефон текст заказа 1 текст заказа 2 будет удобнее с ней дальше работать, при условии, что поля обьединятся правильно по "номера заказа". Если же такой возможно нет, то возможно ли работать сразу с 3 таблицами? и как то указывать на это ключевое поле ? |
|||
|
||||
chip_and_dayl |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 603 Регистрация: 22.4.2007 Где: Украина, Киев Репутация: 2 Всего: 9 |
Valior
Все возможно. Какие компоненты используете для работы с базой? -------------------- Фсё будет хорошо!!! |
|||
|
||||
Valior |
|
|||
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 24.5.2006 Репутация: нет Всего: нет |
||||
|
||||
chip_and_dayl |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 603 Регистрация: 22.4.2007 Где: Украина, Киев Репутация: 2 Всего: 9 |
Valior
Кстати, Ado, о котором говорил Данкинг имеет аналогичный компонент AdoTable, за рядом маленьких исключений которые связаны с подключением к базе/таблице Значить для того, чтобы обьденить все три таблицы, нужен компонент Query, который подключается как и Table, только не выбирается название таблицы. Нас интересует свойство SQL, куда нужно программно или во время построения программы написать запрос:
или обьеденять через inner join В первом варианте есть минус, во всех трех таблицах должен быть существовать заказ, то есть заказ с номером 5484 должен быть и в таблице 1 и 2 и 3, в противном случае он не попадет в результат. Если в вашем случае наличие ссылки на номер заказ в какой-то таблице нет, то нужно использовать inner join Добавлено @ 18:07 Вот инфа по inner join Это сообщение отредактировал(а) chip_and_dayl - 28.1.2010, 18:09 -------------------- Фсё будет хорошо!!! |
|||
|
||||
Valior |
|
|||
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 24.5.2006 Репутация: нет Всего: нет |
Ахха, вот обнаружил 1 свою ошибку. 2 и 3 файл, они отличаются по кол-ву. Тоесть в 2 файле 10000 записей, а в 3 всего 6000. Значит эта запись вообще не попадет? Если забежать вперед, то алгоритм такой, считали телефон из текстого файла, выполнили поиск в 1 таблице за промежуток в -90 дней назад, если телефон не найден в базе, то сохранить номер телефона и обьявление(взятые из текстогово файла) в другую базу. Это сообщение отредактировал(а) Valior - 28.1.2010, 18:14 |
|||
|
||||
chip_and_dayl |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 603 Регистрация: 22.4.2007 Где: Украина, Киев Репутация: 2 Всего: 9 |
Аха, не попадет (тут уже нужно копать в сторону inner join). ТО есть 1 и 2 файл одинаковы (то беж каждому номеру заказу в первой таблице соответствует номер заказа во второй таблице)!?! Добавлено через 4 минуты и 26 секунд Ой, извиняюсь. Нужно копать в сторону левого или правого внешнего обьединения, то есть Left Outer Join или Right Outer Join -------------------- Фсё будет хорошо!!! |
|||
|
||||
Valior |
|
|||
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 24.5.2006 Репутация: нет Всего: нет |
Ахха, это понятно.
В поле телефон, записан телефон заказчика. Но не строго, тоесть может попадаться техх-хх-хх, может х(хххх)хх-хх-хх,ну вообщем по разному. А искать перебором, это очень долго, использую вот это Table1.Locate('teefon',s,[loCaseInsensitive]); но к сожалению, не всегда точно находит.... Как быть? |
|||
|
||||
Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 35 Всего: 130 |
Запрос на фоксе:
-------------------- There's nothing left but silent epitaphs. |
|||
|
||||
Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 23 Всего: 54 |
привести все номера в базе к одному формату - убрать все кроме чисел, по длине номера определить нужно ли дописывать код города -------------------- Кольцов Виктор Владимирович |
|||
|
||||
Valior |
|
|||
Новичок Профиль Группа: Участник Сообщений: 38 Регистрация: 24.5.2006 Репутация: нет Всего: нет |
||||
|
||||
Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 23 Всего: 54 |
можно с помощью вычислимого поля. -------------------- Кольцов Виктор Владимирович |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Базы данных и репортинг" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |