Поиск:

Ответ в темуСоздание новой темы Создание опроса
> работа с dbf 
:(
    Опции темы
Valior
Дата 28.1.2010, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 24.5.2006

Репутация: нет
Всего: нет



Имеется, база данных состоящая из 3 файлов dbf
1й Файл имеет структуру в 35 полей. Нужны только 3.(номер заказа, дата и телефон)
2й 3й имеют структуру в 2 поля (номер заказа и текст заказа.)
Соответственно Номер заказа во всех файлах одинаковое(названия полей только разные).
Так же есть текстовый файл.(телефон и текст заказа)
необходимо посредством дельфи, организовать сравнение содержимого текстового файла с данной базой за определенный период.

Подскажите с чего начать7 Что лучше использовать и прочее?

PM MAIL   Вверх
Valior
Дата 28.1.2010, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 24.5.2006

Репутация: нет
Всего: нет



Подскажите, как удалить ненужные столбцы, и обьединить 3 файла в один, но чтобы поле номер заказа было одно?
PM MAIL   Вверх
Данкинг
Дата 28.1.2010, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(Valior @  28.1.2010,  16:24 Найти цитируемый пост)
Что лучше использовать и прочее?

Можно ADO.

Цитата(Valior @  28.1.2010,  17:02 Найти цитируемый пост)
Подскажите, как удалить ненужные столбцы

Код

alter table BASE drop column Nenuzhnoe_pole


Цитата(Valior @  28.1.2010,  17:02 Найти цитируемый пост)
обьединить 3 файла в один

Перебором строк только. Но вообще данную задачу я бы решал на фоксе.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
chip_and_dayl
Дата 28.1.2010, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 2
Всего: 9



Под обьединением файлов я так понял подразумевается - обьединение трех таблиц? Тады inner в помощь

А под удалением я так понял, что нужно просто вывести из всей кучи три поля? Тогда перечисление полей в Select поможет


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Valior
Дата 28.1.2010, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 24.5.2006

Репутация: нет
Всего: нет



Цитата(Данкинг @  28.1.2010,  17:22 Найти цитируемый пост)
Можно ADO.


С ним вообще дела не имел, даже не представляю что это за зверь.



Цитата(chip_and_dayl @  28.1.2010,  17:39 Найти цитируемый пост)
Под обьединением файлов я так понял подразумевается - обьединение трех таблиц? Тады inner в помощь

А под удалением я так понял, что нужно просто вывести из всей кучи три поля? Тогда перечисление полей в Select поможет 


Обьединение, ну да, думаю что если привести ее к виду:

дата    номер заказа     телефон   текст заказа 1      текст заказа 2 

будет удобнее с ней дальше работать, при условии, что поля обьединятся правильно по "номера заказа".
Если же такой возможно нет, то возможно ли работать сразу с 3 таблицами? и как то указывать на это ключевое поле ?

PM MAIL   Вверх
chip_and_dayl
Дата 28.1.2010, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 2
Всего: 9



Valior
Все возможно. Какие компоненты используете для работы с базой?


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Valior
Дата 28.1.2010, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 24.5.2006

Репутация: нет
Всего: нет



Цитата(chip_and_dayl @  28.1.2010,  17:49 Найти цитируемый пост)
Все возможно. Какие компоненты используете для работы с базой? 


    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    Table1: TTable;

База в Aliase.

Это сообщение отредактировал(а) Valior - 28.1.2010, 17:51
PM MAIL   Вверх
chip_and_dayl
Дата 28.1.2010, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 2
Всего: 9



Valior
Кстати, Ado, о котором говорил Данкинг имеет аналогичный компонент AdoTable, за рядом маленьких исключений которые связаны с подключением к базе/таблице

Значить для того, чтобы обьденить все три таблицы, нужен компонент Query, который подключается как и Table, только не выбирается название таблицы. Нас интересует свойство SQL, куда нужно программно или во время построения программы написать запрос:

Код

select Таблица1.НомерЗаказа, Таблица1.Поле13, Таблица2.Поле1, Таблица3.ПОле3 
from Таблица1, Таблица2, Таблица3
where Таблица1.НомерЗаказа=Таблица2.НомерЗаказа and Таблица1.НомерЗаказа=Таблица3.НомерЗаказа

или обьеденять через inner join

В первом варианте есть минус, во всех трех таблицах должен быть существовать заказ, то есть заказ с номером 5484 должен быть и в таблице 1 и 2 и 3, в противном случае он не попадет в результат.
Если в вашем случае наличие ссылки на номер заказ в какой-то таблице нет, то нужно использовать inner join

Добавлено @ 18:07
Вот инфа по inner join

Это сообщение отредактировал(а) chip_and_dayl - 28.1.2010, 18:09


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Valior
Дата 28.1.2010, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 24.5.2006

Репутация: нет
Всего: нет



Цитата(chip_and_dayl @  28.1.2010,  18:03 Найти цитируемый пост)
В первом варианте есть минус, во всех трех таблицах должен быть существовать заказ, то есть заказ с номером 5484 должен быть и в таблице 1 и 2 и 3, в противном случае он не попадет в результат.
Если в вашем случае наличие ссылки на номер заказ в какой-то таблице нет, то нужно использовать inner 


Ахха, вот обнаружил 1 свою ошибку.
2 и 3 файл, они отличаются по кол-ву. Тоесть в 2 файле 10000 записей, а в 3 всего 6000.  Значит эта запись вообще не попадет?


Если забежать вперед, то  алгоритм такой, считали телефон из текстого файла, выполнили поиск в 1 таблице за промежуток в -90 дней назад, если телефон не найден в базе, то сохранить номер телефона и обьявление(взятые из текстогово файла) в другую базу.

Это сообщение отредактировал(а) Valior - 28.1.2010, 18:14
PM MAIL   Вверх
chip_and_dayl
Дата 28.1.2010, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 2
Всего: 9



Цитата(Valior @  28.1.2010,  18:07 Найти цитируемый пост)
Ахха, вот обнаружил 1 свою ошибку.2 и 3 файл, они отличаются по кол-ву. Тоесть в 2 файле 10000 записей, а в 3 всего 6000.  Значит эта запись вообще не попадет?

Аха, не попадет (тут уже нужно копать в сторону inner join). ТО есть 1 и 2 файл одинаковы (то беж каждому номеру заказу в первой таблице соответствует номер заказа во второй таблице)!?!

Добавлено через 4 минуты и 26 секунд
Цитата(chip_and_dayl @  28.1.2010,  18:35 Найти цитируемый пост)
(тут уже нужно копать в сторону inner join).

Ой, извиняюсь. Нужно копать в сторону левого или правого внешнего обьединения, то есть Left Outer Join  или Right Outer Join


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Valior
Дата 28.1.2010, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 24.5.2006

Репутация: нет
Всего: нет



Ахха, это понятно. 
В поле телефон, записан телефон заказчика. Но не строго, тоесть может попадаться техх-хх-хх, может х(хххх)хх-хх-хх,ну вообщем по разному. А искать перебором, это очень долго, использую вот это
Table1.Locate('teefon',s,[loCaseInsensitive]);

но к сожалению, не всегда точно находит.... Как быть?
PM MAIL   Вверх
Данкинг
Дата 28.1.2010, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(Valior @  28.1.2010,  19:12 Найти цитируемый пост)
не всегда точно находит.... Как быть? 

Запрос на фоксе:
Код

select * from BASE where allt(telefon)=='460-1517'




--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Frees
Дата 28.1.2010, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 23
Всего: 54



Цитата(Valior @  28.1.2010,  22:12 Найти цитируемый пост)
но к сожалению, не всегда точно находит.... Как быть?

привести все номера в базе к одному формату - убрать все кроме чисел, по длине номера определить нужно ли дописывать код города


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Valior
Дата 28.1.2010, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 24.5.2006

Репутация: нет
Всего: нет



Цитата(Frees @  28.1.2010,  19:18 Найти цитируемый пост)
привести все номера в базе к одному формату - убрать все кроме чисел, по длине номера определить нужно ли дописывать код города 


Тоесть методом перебора? не годится... База оч большая.
PM MAIL   Вверх
Frees
Дата 28.1.2010, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 23
Всего: 54



Цитата(Valior @  28.1.2010,  22:41 Найти цитируемый пост)
Тоесть методом перебора? не годится...

 можно с помощью вычислимого поля. 


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Valior
Дата 28.1.2010, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 24.5.2006

Репутация: нет
Всего: нет



Цитата(Frees @  28.1.2010,  19:44 Найти цитируемый пост)
можно с помощью вычислимого поля.  

Это как?
PM MAIL   Вверх
chip_and_dayl
Дата 28.1.2010, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 2
Всего: 9



Вот нашел код с помощью, которого можно убрать все символы с номера телефона кроме цифр, то есть если введено:
тел. 8-(44)-222-22-22, то результат будет 80442222222

Код

var
 Source, Dest: String;
 i: Integer;
begin
  Source := 'строка откуда нужно убрать все символы';
  Dest := '';

   for i := 1 to Length(Source) do
    if Source[i] in ['0'..'9'] then
     Dest := Dest + Source[i];

 Edit2.Text:=ANSILowerCase(Dest);
end;


Добавлено через 1 минуту и 18 секунд
Дальше номер телефона 80442222222 нужно сократить до 7 сиволов, то есть убрать код города и т.д., для этого делаем проверку на количество символов, и если длина больше 7, удаляем первые символы пока не будет 7 знаков, то есть результат 2222222


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Frees
Дата 28.1.2010, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 23
Всего: 54



Цитата(Valior @  28.1.2010,  23:49 Найти цитируемый пост)
Это как?

вот как то так
http://www.citforum.ru/programming/32less/les38.shtml#3


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
chip_and_dayl
Дата 28.1.2010, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 2
Всего: 9



Цитата

Что такое вычисляемые поля 

     Данные, хранимые в таблицах базы данных, обычно бывают представлены не в таком виде, который необходим для ваших приложений. Вот несколько примеров.

  • Вам необходимы общая сумма, среднее значение или результаты других расчетов, основанные на данных, имеющихся в таблице.
  • Вам необходимо отобразить поле, содержащее имя компании с ее адресом, но эта информация расположена в разных столбцах таблицы. 
  • Город, штат и ZIP-код хранятся в отдельных столбцах (как и должно быть), но для программы печати почтовых наклеек необходима эта информация в одном, корректно сформированном поле. 
  • Данные в столбце введены с заглавными и строчными буквами, но в вашем отчете необходимо использовать только заглавные буквы.
  • В таблице с предметами заказа хранятся цены продуктов и их количество, но не полная цена (цена одного продукта, умноженная на его количество) каждого продукта. Чтобы распечатать счет, необходимы полные цены. 

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


Это сообщение отредактировал(а) chip_and_dayl - 28.1.2010, 21:13


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Valior
Дата 28.1.2010, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 24.5.2006

Репутация: нет
Всего: нет



Ну это я и сам сообразил, просто перебирать все строки в таблице очень и очень долго. Вопрос был, про возможность как то ускорить процедуру.
PM MAIL   Вверх
chip_and_dayl
Дата 28.1.2010, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 2
Всего: 9



Ну, если в вычисляемом поле, телефон будет в "голом виде", то можно использовать тот же Locate
Table1.Locate('teefon',s,[loCaseInsensitive]);
Только в переменную s тоже нужно передавать телефон в "голом виде"

Какая будет скорость неизвестно

Добавлено через 2 минуты и 30 секунд
Кстати, а сколько записей в текстовом файле?

Это сообщение отредактировал(а) chip_and_dayl - 28.1.2010, 21:35


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Valior
Дата 28.1.2010, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 24.5.2006

Репутация: нет
Всего: нет



Ну это я и сам сообразил, просто перебирать все строки в таблице очень и очень долго. Вопрос был, про возможность как то ускорить процедуру.

Добавлено через 1 минуту и 12 секунд
Цитата(chip_and_dayl @  28.1.2010,  21:35 Найти цитируемый пост)

Добавлено через 2 минуты и 30 секунд
Кстати, а сколько записей в текстовом файле?


На вскидку не скажу, около 5 тысяч. В базе, где происходит поиск порядко 900 тыс
PM MAIL   Вверх
chip_and_dayl
Дата 28.1.2010, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 2
Всего: 9



smile ничего себе.

А как часто будет происходит сравнение базы данных с текстовым  файлом?

Добавлено через 55 секунд
И будут все записи проверятся на соответствие в базе по заданному критерию !?!


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Valior
Дата 28.1.2010, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 24.5.2006

Репутация: нет
Всего: нет



Каждую неделю, + за неделю база возрастает на 1000-2000 обьявлений. Число в текстовом файле более или менее постоянно. Вот поэтому нужно поиск осуществлять не более 90 дней с текущей даты.

Это сообщение отредактировал(а) Valior - 28.1.2010, 21:44
PM MAIL   Вверх
Frees
Дата 28.1.2010, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 23
Всего: 54



Цитата(Valior @  29.1.2010,  00:38 Найти цитируемый пост)
На вскидку не скажу, около 5 тысяч. В базе, где происходит поиск порядко 900 тыс

900 тысяч уже весомое число, так что для оптимизации забудь про локейт и займись индексацией, и поиском с помощью запросов. 


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Valior
Дата 28.1.2010, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 24.5.2006

Репутация: нет
Всего: нет



Цитата(Frees @  28.1.2010,  21:44 Найти цитируемый пост)
900 тысяч уже весомое число, так что для оптимизации забудь про локейт и займись индексацией, и поиском с помощью запросов.  


В том то и дело, что теоретически запросы намного быстрее должны работать.
Но когда я вывжу в  дбгрид испобльзуя тайбл, процесс занимает сек 4-5, а когда через запрос 
Код

Select nomer,telefon,data from table

то намного дольше, секунд 10-15. Вот я и растрелся что то.
PM MAIL   Вверх
chip_and_dayl
Дата 28.1.2010, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 2
Всего: 9



Valior
Я бы тогда предложил следующее:
1. В таблице где хранится номер телефона, создать доп. поле с хранением номера телефона в чистом виде. 
2. Текстовой файл закинуть в базу
3. И также добавить поле номер телефона в чистом виде

Тогда  вопрос, который был поставлен в начале темы решается одним запросом  на обьединение,сравнение и вставку

Это сообщение отредактировал(а) chip_and_dayl - 28.1.2010, 21:55


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Frees
Дата 28.1.2010, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 23
Всего: 54



а возможности поменять dbf на нормальную СУБД нет?
Цитата(Valior @  29.1.2010,  00:51 Найти цитируемый пост)
секунд 10-15

для 900 тыс это не много...

Это сообщение отредактировал(а) Frees - 28.1.2010, 21:55


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
chip_and_dayl
Дата 28.1.2010, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 2
Всего: 9



Цитата(Frees @  28.1.2010,  21:44 Найти цитируемый пост)
и поиском с помощью запросов. 


Цитата(Valior @  28.1.2010,  21:51 Найти цитируемый пост)
В том то и дело, что теоретически запросы намного быстрее должны работать.Но когда я вывжу в  дбгрид испобльзуя тайбл, процесс занимает сек 4-5, а когда через запрос 


В случае с поиском через запрос, оно должно быть быстрее, так как мы не будем выводить всю таблицу, а только одну запись.
ТО есть, сначала читаем первую строку из текстового файла и  передаем номер телефона в запрос на поиск, после чего если критерий поиск удовлетворен, то получаем одну строку, в противном случае - пусто


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Valior
Дата 28.1.2010, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 24.5.2006

Репутация: нет
Всего: нет



Цитата(chip_and_dayl @  28.1.2010,  21:53 Найти цитируемый пост)
Я бы тогда предложил следующее:
1. В таблице где хранится номер телефона, создать доп. поле с хранением номера телефона в чистом виде. 
2. Текстовой файл закинуть в базу
3. И также добавить поле номер телефона в чистом виде

Тогда  вопрос, который был поставлен в начале темы решается одним запросом  на обьединение,сравнение и вставку



Не совсем понял мысль.

Добавлено через 1 минуту и 3 секунды
Цитата(Frees @  28.1.2010,  21:55 Найти цитируемый пост)
а возможности поменять dbf на нормальную СУБД нет?

К сожалению нет, если только отдельными прогами перезапись в некую другую БД.
PM MAIL   Вверх
chip_and_dayl
Дата 28.1.2010, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 2
Всего: 9



1. Создать в таблице доп. поле, чтобы хранить телефон в виде ххххххх
2. Отказать от текстового файла. Создать таблицу с теми же полями, что  хранил текстовой файл, и информацию перенести  в эту же созданную таблицу
3. В таблице, которую мы создали как замену текстовому файлу хранить телефон в виде ххххххх

Правда с хранением есть один нюанс, так как мы храним 7  цифр, то кода города нету, может возникнуть ситуация, когда номер телефона с Донецка, например, 0(62)-222-22-22 совпадет с номером телефона с Киева 0(44)-222-22-22.

Да, теперь самое главное, для того, чтобы сравнить есть ли данные в базе, которые  есть в текстовом файле (который теперь не текстовой) достаточно написать запрос следующего плана
Код

select выводим нужные поля
from указываем таблицы
делаем обьединение таблиц
задаем условие не больше 90 дней

полученный результат можно куда-то вставить



--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Frees
Дата 28.1.2010, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 23
Всего: 54



Цитата(chip_and_dayl @  29.1.2010,  00:53 Найти цитируемый пост)
Я бы тогда предложил следующее:1. В таблице где хранится номер телефона, создать доп. поле с хранением номера телефона в чистом виде. 2. Текстовой файл закинуть в базу3. И также добавить поле номер телефона в чистом виде

4 проиндексировать поле "Телефон в чистом виде"


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
chip_and_dayl
Дата 28.1.2010, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 2
Всего: 9



Frees
Точно. Самое главное упустил)


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Valior
Дата 28.1.2010, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 24.5.2006

Репутация: нет
Всего: нет



Цитата(chip_and_dayl @  28.1.2010,  22:12 Найти цитируемый пост)
1. Создать в таблице доп. поле, чтобы хранить телефон в виде ххххххх
2. Отказать от текстового файла. Создать таблицу с теми же полями, что  хранил текстовой файл, и информацию перенести  в эту же созданную таблицу
3. В таблице, которую мы создали как замену текстовому файлу хранить телефон в виде ххххххх

Правда с хранением есть один нюанс, так как мы храним 7  цифр, то кода города нету, может возникнуть ситуация, когда номер телефона с Донецка, например, 0(62)-222-22-22 совпадет с номером телефона с Киева 0(44)-222-22-22.

Да, теперь самое главное, для того, чтобы сравнить есть ли данные в базе, которые  есть в текстовом файле (который теперь не текстовой) достаточно написать запрос следующего плана
    
select выводим нужные поля
from указываем таблицы
делаем обьединение таблиц
задаем условие не больше 90 дней
полученный результат можно куда-то вставить




1. А разница между созданием поля и изменением уже существующего?
2. Тут есть проблема. Данный файл мы получаем, после работы программы FineReader, тоесть будут еще процедуры для преобразования в надлежащий вид. но думаю, что можно потом будет перенести в БД
3.Можно

А вот ньюанс очень критичный, тк, телефоны действительно межрегиональные. но думаю, не составит особо труда хранить и 12 цифр



PM MAIL   Вверх
chip_and_dayl
Дата 28.1.2010, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 2
Всего: 9



Цитата(Valior @  28.1.2010,  22:20 Найти цитируемый пост)
1. А разница между созданием поля и изменением уже существующего?

Разница в том, что нам не нужно будет его гонять туда и сюда. Так как мы в виде ххххххх храним для базы, а для пользователя отображаем в удобном виде, в котором он записал.

Цитата(Valior @  28.1.2010,  22:20 Найти цитируемый пост)
2. Тут есть проблема. Данный файл мы получаем, после работы программы FineReader, тоесть будут еще процедуры для преобразования в надлежащий вид. но думаю, что можно потом будет перенести в БД

Тогда постоянно загонять с текстового файла данные в базу, после чего очистить текстовой файл

Добавлено @ 22:33
Цитата(Valior @  28.1.2010,  22:20 Найти цитируемый пост)
А вот ньюанс очень критичный, тк, телефоны действительно межрегиональные. но думаю, не составит особо труда хранить и 12 цифр

Можно 12, но если он в базе хранится в виде тел. 478-77-44, а в текстовом файле записан как 044-478-77-44, то на выходе будут разные значения. Тут такой вопрос, код города все пишут!?! или есть люди, которые  записывают без кода города?

Это сообщение отредактировал(а) chip_and_dayl - 28.1.2010, 22:34


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Valior
Дата 28.1.2010, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 24.5.2006

Репутация: нет
Всего: нет



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

Офтоп, 

dbmemo1.text:=(Текст из колонки 'номер', в веделенной в дб гриде строке), как это сделать? чет не могу найти нужное...

Это сообщение отредактировал(а) Valior - 28.1.2010, 23:02
PM MAIL   Вверх
chip_and_dayl
Дата 28.1.2010, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 2
Всего: 9



Цитата(Valior @  28.1.2010,  22:58 Найти цитируемый пост)
dbmemo1.text:=(Текст из колонки 'номер', в веделенной в дб гриде строке), как это сделать? чет не могу найти нужное...

Если Дбгрид отображает результат Квери, то 

Код

dbmemo1.Tetx:=Query1.FieldByNAMe('telefon').AsString


если ДбГрид выводит набор данных с Табле, то Квери1 заменить на Табле1

Добавлено @ 23:08
Цитата(Valior @  28.1.2010,  22:58 Найти цитируемый пост)
А, все дошло, тоесть одно поле в отором будем хранить еще и голой телефон, все понял.

Аха. Первый храним для пользователя, а второй для сравнения данных

Цитата(Valior @  28.1.2010,  22:58 Найти цитируемый пост)
В базе поле телефон имеет длину 12 символов. И код города только в случае, если он не родной город. 

Все-таки нужно найти оптимальную длину, на которую нужно усекать телефон, то есть нам нужно оставить главные цифры, код и номер телефона, если минимальный код страны 2 символа, а номер телефона 7, то выходит 9.
Для чего это я говорю, код города я так понял пишут, но вот код страны, могут написать и могут не написать, тогда выйдет разная длина

Это сообщение отредактировал(а) chip_and_dayl - 28.1.2010, 23:09


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Valior
Дата 28.1.2010, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 24.5.2006

Репутация: нет
Всего: нет



Цитата(chip_and_dayl @  28.1.2010,  23:04 Найти цитируемый пост)
Все-таки нужно найти оптимальную длину, на которую нужно усекать телефон, то есть нам нужно оставить главные цифры, код и номер телефона, если минимальный код 2 символа а номер телефона 7, то выходит 9.
Для чего это я говорю, код города я так понял пишут, но вот код страны, могут написать и могут не написать, тогда выйдет разная длина 


Там еще пишут и сотовые.
PM MAIL   Вверх
chip_and_dayl
Дата 28.1.2010, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 2
Всего: 9



Valior
Ну, сотовый тоже имеет 7 цифр - сам номер, и 2 цифры код оператора

9 цифр должно хватить, чтобы телефоны следующего плана были равны:
38(код страны) 78(оператора/города) 545 56 55  = 78 545 56 55
38(код страны) 068(оператора/города) 545 51 11 = 68 545 51 11
38(код страны) 378(оператора/города) 545 56 55 = 78 545 56 55
096 787 77 05 = 96 787 77 05

Это сообщение отредактировал(а) chip_and_dayl - 28.1.2010, 23:21


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Valior
Дата 28.1.2010, 23:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 24.5.2006

Репутация: нет
Всего: нет



Ок, согласен)

Щас уже проверить не смогу, забыл с работы захватить файлы.
Но подведем итог.

Сделать в таблице поле, и записать в него чистый номер.
Создать таблицу для Текстового файла, и записать в нее его содержимое,номер - чистый


PM MAIL   Вверх
chip_and_dayl
Дата 28.1.2010, 23:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 2
Всего: 9



Valior
Итог утверждаю :) 


Цитата(Valior @  28.1.2010,  23:26 Найти цитируемый пост)
Щас уже проверить не смогу, забыл с работы захватить файлы.

Уже и время позднее, чтобы проверять. Да и работы здесь не на час :)

Это сообщение отредактировал(а) chip_and_dayl - 28.1.2010, 23:29


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Valior
Дата 29.1.2010, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 24.5.2006

Репутация: нет
Всего: нет



Query1.SQL.Text:='INSERT INTO base (phone) '
пытаюсь вставлять в поле с "чистым номером", результат выполнения процедуры nomer, как это оформить?
PM MAIL   Вверх
Frees
Дата 29.1.2010, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 23
Всего: 54



Код

Query1.SQL.Text:='INSERT INTO base (phone)VALUES(:phone) '
Query1.ParamByName('phone').Value := nomer;


Добавлено через 1 минуту и 44 секунды
а если ты хочеш в уже добавленной записи дописать "чистый номер" то тебе нужен update а не insrt


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Valior
Дата 29.1.2010, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 24.5.2006

Репутация: нет
Всего: нет



Цитата(Frees @  29.1.2010,  11:18 Найти цитируемый пост)

а если ты хочеш в уже добавленной записи дописать "чистый номер" то тебе нужен update а не insrt 


создано чистое поле, я в него хочу скопировать то, что уже в другом поле, но с необходимыми изменениями.
Query1.ParamByName('phone').Value := nomer;
это тож понятно, как передавать в процедуру в виде входного параметра, результат селекта?

Это сообщение отредактировал(а) Valior - 29.1.2010, 11:45
PM MAIL   Вверх
Frees
Дата 29.1.2010, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 23
Всего: 54



Цитата(Valior @  29.1.2010,  14:36 Найти цитируемый пост)
создано чистое поле, я в него хочу скопировать то, что уже в другом поле, но с необходимыми изменениями.

тебе нужен UPDATE


Код

Query1.SQL.Text:='SELECT id, old_number from base'
Query1.open;
Query2.SQL.Text:='udate base set phone = :phone) where id = :id';
while  not Query1.eof do
begin
  Query2.Close;
  Query2.ParamByName('id').Value := Query1.FieldByName('id').Value;
  Query2.ParamByName('phone').Value := nomer(Query1.FieldByName('old_number').asString);
  Query2.execsql;//или как то так, вобщем выполняем запрос
  Query1.next;
end;


Это сообщение отредактировал(а) Frees - 29.1.2010, 12:21


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Valior
Дата 29.1.2010, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 24.5.2006

Репутация: нет
Всего: нет



id и phone что за поля?
У меня есть old_number и new_nomber
PM MAIL   Вверх
Frees
Дата 29.1.2010, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 23
Всего: 54



Цитата(Valior @  29.1.2010,  15:44 Найти цитируемый пост)
У меня есть old_number и new_nomber

id - первичный ключ, можно вместо него old_number использовать 
phone - это new_nomber


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Valior
Дата 29.1.2010, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 24.5.2006

Репутация: нет
Всего: нет



10 минут ждал, чтобы погляеть)))) записывает во все строки, первое переведенное значение)))

Это сообщение отредактировал(а) Valior - 29.1.2010, 13:32
PM MAIL   Вверх
Frees
Дата 29.1.2010, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 23
Всего: 54



Цитата(Valior @  29.1.2010,  16:29 Найти цитируемый пост)
10 минут ждал, чтобы погляеть))))

Что бы не ждать допиши в селект FIRST 20 - обработается только 20 первых записей...


Цитата(Valior @  29.1.2010,  16:29 Найти цитируемый пост)
записывает во все строки, первое переведенное значение)))

это как?

old_number | new_nomber
234-65-23   |2346523
123-434-2   |2346523
213-3-444   |2346523

так?

код свой скопируй сюда

Это сообщение отредактировал(а) Frees - 29.1.2010, 14:05


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Valior
Дата 29.1.2010, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 24.5.2006

Репутация: нет
Всего: нет



Разобрался, сам ошибся. Для удобства удалил все дубли из базы. и немного ее сократил.
Так, вопрос, как ограничить в запросе вывод записей, до 90 дней назад?
Формат даты - xx.xx.xxxx

PM MAIL   Вверх
Frees
Дата 29.1.2010, 14:39 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 23
Всего: 54



Код

uses DateUtils//вроде
...
Query1.SQL.Text:='select from base where  date_1 > :d';
Query1.ParamByName('d').AsDate := IncDay(Date, -90);
Query1.open;




date_1 поле с датой записи


Это сообщение отредактировал(а) Frees - 29.1.2010, 14:40


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Valior
Дата 29.1.2010, 14:46 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 24.5.2006

Репутация: нет
Всего: нет



Решил прибегнуть к такому

Код

 Query1.SQL.Text:='select * from ad2 where  ad2_dsy BETWEEN :d and :s';
 Query1.ParamByName('d').AsDate := DateTimePicker1.Date;
 Query1.ParamByName('s').AsDate := DateTimePicker2.Date;
 query1.Active:=true;


Это сообщение отредактировал(а) Valior - 29.1.2010, 15:08
PM MAIL   Вверх
chip_and_dayl
Дата 29.1.2010, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 2
Всего: 9



Valior
Вижу весь  в поту и работеsmile 

Кстати, по поводу ограничения до 90 дней, лучше сделай, как написал 
Frees, если не хочешь вручную отсчитывать  smile




--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Valior
Дата 29.1.2010, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 24.5.2006

Репутация: нет
Всего: нет



Цитата(chip_and_dayl @  29.1.2010,  19:59 Найти цитируемый пост)
Кстати, по поводу ограничения до 90 дней, лучше сделай, как написал 
Frees, если не хочешь вручную отсчитывать  smile


Тут мысль возникла. Если я все арвно искать буду по 90 дней сроку, может както и базу обрезать? Чтобы весь обьем то не грузить?
PM MAIL   Вверх
chip_and_dayl
Дата 29.1.2010, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 2
Всего: 9



Valior
То  есть, в базе хочешь хранить данные за 90 дней? А то, что выше, хранить в архивной базе?


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Valior
Дата 29.1.2010, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 24.5.2006

Репутация: нет
Всего: нет



Цитата(chip_and_dayl @  29.1.2010,  20:46 Найти цитируемый пост)

То  есть, в базе хочешь хранить данные за 90 дней? А то, что выше, хранить в архивной базе



Я не могу указать что в ней хранить, файл базы я копирую отдельно в раб область.
Файл весит 480мб. Чтобы его весь загрузить это очень много времени занимает.
А область поиска каждый день ограничена 90 днями. 
Тоесть, прогу запустили, скопировали файл базы, обрезали его до 90 дней и начинаем с ним дальше работать.

Как то так.

PM MAIL   Вверх
chip_and_dayl
Дата 29.1.2010, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 2
Всего: 9



Valior
Тады все можно обрезать одним запросом 

Код

DELETE FROM <Имя Таблицы> WHERE Дата<Дата-90дней


Добавлено через 1 минуту
Ты копируешь базу, делаешь этот запрос, и оно лишнее с базы удаляет


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Frees
Дата 29.1.2010, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 23
Всего: 54



можно
сделать селект в новую таблицу(синтаксис не помню, поищи). а старую грохнуть. может быть быстрее.


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Данкинг
Дата 2.2.2010, 00:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(chip_and_dayl @  29.1.2010,  21:40 Найти цитируемый пост)
Код

DELETE FROM <Имя Таблицы> WHERE Дата<Дата-90дней

Ты собрался из DBF таким образом удалять? smile 

Цитата(Frees @  29.1.2010,  22:01 Найти цитируемый пост)
сделать селект в новую таблицу(синтаксис не помню, поищи).

Код

select * from BASE1 into table BASE2

- правда, я не пробовал, как сиё будет работать не из фокса.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Valior
Дата 2.2.2010, 09:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 24.5.2006

Репутация: нет
Всего: нет



И как это сделать? 
тоесть что быстрее будет? выборка или удаление и последуящая загрузка?
PM MAIL   Вверх
Valior
Дата 2.2.2010, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 24.5.2006

Репутация: нет
Всего: нет



Собственно программа почти написана, осталось привести к нужному виду файл.
Вот такой текстовый файл мы имеем.
распознается документ хренова, и всегда по разному.
но думаю, что все должно свестись к виду.
1.считали строку от пустой строки до пустой строки.
2.ищем (Тел.)
3.Копируем все после п.2 до ближайщей точки. (как раз номер телефона.)+ выполняем вышенаписанную процедуру nomer и записываем кудато
3.копируем, все что выше п2. до ново строки.-  будет текст тоже записываем куда то...


Правильно?


Присоединённый файл ( Кол-во скачиваний: 16 )
Присоединённый файл  1.txt 17,08 Kb
PM MAIL   Вверх
Frees
Дата 2.2.2010, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 23
Всего: 54



тебе этот файл разобрать надо в выше сказанную структуру?

Добавлено через 55 секунд
Цитата(Valior @  2.2.2010,  15:41 Найти цитируемый пост)
 осталось привести к нужному виду файл.

это процентов 90 от написания проги... ты только начал ее писать..


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Valior
Дата 2.2.2010, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 24.5.2006

Репутация: нет
Всего: нет



Не, это на самом деле мелочи)) 
ну от помощи бы не отказался, можно даже и советом)

Это сообщение отредактировал(а) Valior - 2.2.2010, 13:30
PM MAIL   Вверх
Frees
Дата 2.2.2010, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 23
Всего: 54



это объявления из газеты?


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Valior
Дата 2.2.2010, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 24.5.2006

Репутация: нет
Всего: нет



Почти.
PM MAIL   Вверх
Frees
Дата 2.2.2010, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 23
Всего: 54



начни с того что отдели одно объявление от другого.... как - хз...

может проще распознавать не в текстовый файл а  в ехель, если возможно... 

Исходный скрин показать можешь?

Это сообщение отредактировал(а) Frees - 2.2.2010, 13:55


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Valior
Дата 2.2.2010, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 24.5.2006

Репутация: нет
Всего: нет



Цитата(Frees @  2.2.2010,  13:55 Найти цитируемый пост)
начни с того что отдели одно объявление от другого.... как - хз...

может проще распознавать не в текстовый файл а  в ехель, если возможно... 

Исходный скрин показать можешь?


вот.

Присоединённый файл ( Кол-во скачиваний: 10 )
Присоединённый файл  Untitled_1.jpg 715,23 Kb
PM MAIL   Вверх
chip_and_dayl
Дата 2.2.2010, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: 2
Всего: 9



Цитата(Данкинг @  2.2.2010,  00:54 Найти цитируемый пост)
Ты собрался из DBF таким образом удалять?  

Ну, на сколько я понял, он делает копию дбф файла, чтобы лишнее не мешало, мы его удаляем из копию базы

Цитата(Данкинг @  2.2.2010,  00:54 Найти цитируемый пост)
сделать селект в новую таблицу(синтаксис не помню, поищи).

Думал тоже предложитьsmile

Код

INSERT INTO <название таблицы> SELECT <имя столбца>,... FROM <название таблицы>



--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Valior
Дата 3.2.2010, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 24.5.2006

Репутация: нет
Всего: нет



Код

  if Table1.Locate('ad2_phone',nomer(tel),[loCaseInsensitive]) then


пытаюсь искать в таблице нужный телефон, но прога вываливается с ошибкой Operation not applicable

В чем может быть сыр бор?

Это сообщение отредактировал(а) Valior - 3.2.2010, 17:16
PM MAIL   Вверх
Akella
Дата 6.2.2010, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Я смотрю, что здесь уже такой сыр-бор начался. Тему пора закрывать.

Добавлено через 3 минуты и 37 секунд
Valior, 1 для парсинга текста советую использовать регулярные выражения.



Цитата(Valior @  3.2.2010,  16:07 Найти цитируемый пост)
if Table1.Locate('ad2_phone',nomer(tel),[loCaseInsensitive]) then


Цитата(Valior @  3.2.2010,  16:07 Найти цитируемый пост)
пытаюсь искать в таблице нужный телефон, но прога вываливается с ошибкой Operation not applicable

В чем может быть сыр бор?

Мало информации. Может проблема в другом месте? А что ты надыбал в гугле по тексту ошибки??
PM MAIL   Вверх
Данкинг
Дата 7.2.2010, 00:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(chip_and_dayl @  2.2.2010,  16:16 Найти цитируемый пост)
Цитата(Данкинг @  2.2.2010,  00:54 Найти цитируемый пост)
сделать селект в новую таблицу(синтаксис не помню, поищи).

Думал тоже предложить

Это не моя цитата! smile А синтаксис я там как раз написал. smile 

Цитата(Valior @  3.2.2010,  16:07 Найти цитируемый пост)
Operation not applicable

Что-то с типами полей не так.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.2289 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.