Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 02.05.2010, 18:15   #1
kino
Пользователь
 
Регистрация: 16.12.2009
Сообщений: 13
По умолчанию Автоматизированное создание БД

Здравствуйте.

Имеется: есть 35 602 файла, содержащие текст. Формат файлов не txt, но открываются в любом текстовом редакторе. Все файлы лежат в одной директории, их кол-во пополняется.

Задача: Нужно из этих файлов выдернуть определенные значения. Эти значения есть во всех 35 602 файлах. Все выдернутые ключи нужно забить в DBGrid (может есть вариант по оптимальнее???),поместив в соответствующие поля. (см.рис). Также нужно реализовать процедуру автоматического добавления новых значений в DBGrid по нажатию кнопки.

Вопрос: Подскажите как и откуда отталкиваться. Что лучше использовать!? Опыта в этой области почти нет!

P.S: Можно конечно взять и создать базу в аксесе и вручную выдергивать нужные значения из файлов и пополнять базу. Но как можно было бы автоматизировать этот процесс?

Очень нуждаюсь в помощи, буду сильно благодарен!
Изображения
Тип файла: jpg prog.jpg (60.2 Кб, 156 просмотров)
kino вне форума
Старый 03.05.2010, 21:28   #2
kino
Пользователь
 
Регистрация: 16.12.2009
Сообщений: 13
По умолчанию

Есть небольшое продвижение. По нажатию Button 7 в одном из 35 000 файлов (пока заданном заранее) находится поле sctipt_id. (см. рис)., его значение выводится в memo1., а само оно хранится в переменной s.

Вопросы:
1. Как можно поместить найденное значение из переменной s в DBGrid в соответствующую ячейку?
2. В дальнейшем хотелось бы из заполненного таким образом DBGrid извлечь таблицу либо в Exel, либо в Аксес, реально ли это?

Кто в курсе этого, буду благодарен за помощь!
Изображения
Тип файла: jpg prog2.jpg (41.7 Кб, 150 просмотров)
kino вне форума
Старый 03.05.2010, 22:50   #3
maLoy*508
Форумчанин
 
Аватар для maLoy*508
 
Регистрация: 28.03.2008
Сообщений: 672
По умолчанию

Цитата:
Как можно поместить найденное значение из переменной s в DBGrid в соответствующую ячейку?
DBGrid лишь отображает данные хранящиеся в таблице/запросе подключенному к этому дбгриду... хранитья все в таблицах... в твоем случае создай таблицу с нужными тебе полями в том же аксесе и знаноси туда выбранные данные....
Цитата:
В дальнейшем хотелось бы из заполненного таким образом DBGrid извлечь таблицу либо в Exel, либо в Аксес, реально ли это?
сразу помещаешь данные в таблицу в аксесе, а потому уже отображешь в гриде...
например
Код:
var s : string;
.....
ADOTable1.Insert;// втавка новой записи
ADOTable1.FieldByName('ИмяПоля').AsString := s;//заносим в ячейку "ИмяПоля" значение переменной s
ADOTable1.Post;//сохраняем
maLoy*508 вне форума
Старый 06.05.2010, 00:27   #4
kino
Пользователь
 
Регистрация: 16.12.2009
Сообщений: 13
По умолчанию

Спасибо за помощь!

Вопрос: Есть директория, в ней N-ое количество файлов. Сколько их, программно я подсчитал. Я создаю динамический массив, туда хочу считать подряд все N имен файлов... Как это правильно сделать???
Спасибо за помощь.
kino вне форума
Старый 06.05.2010, 15:06   #5
kino
Пользователь
 
Регистрация: 16.12.2009
Сообщений: 13
По умолчанию

С этим тоже разобрался.

Теперь задача. Есть строковая переменная, в нее нужно по очереди считывать текст файлов, имена которых содержатся в массиве file_name[i]. Делаю я след. образом:

Код:
for i:=0 to count_of_file-1 do
  begin
    file_all:=ReadFromFile(file_name[i]);
    ...
    end;
сама функция(нашел где-то в инете):
Код:
function TForm1.ReadFromFile(FileName: string): string;
begin
  with TStringList.create do
  try
    LoadFromFile(FileName);
    result := text;
  finally
    Free;
  end;
end;
В итоге получается, что считывается в переменную только содержимое первого файла, а при начале считывания 2ого, происходит ошибка и программа завершает работу...

Помогите найти ошибку!
kino вне форума
Старый 06.05.2010, 16:46   #6
Dark_Spirit
Форумчанин
 
Аватар для Dark_Spirit
 
Регистрация: 05.02.2009
Сообщений: 324
По умолчанию

и какая ошибка?
Тяжело быть бестолковым.....
Dark_Spirit вне форума
Старый 06.05.2010, 17:30   #7
kino
Пользователь
 
Регистрация: 16.12.2009
Сообщений: 13
По умолчанию

Ошибка после 1го выполнения цикла!
Изображения
Тип файла: jpg error.jpg (78.8 Кб, 135 просмотров)
kino вне форума
Старый 06.05.2010, 17:43   #8
Dark_Spirit
Форумчанин
 
Аватар для Dark_Spirit
 
Регистрация: 05.02.2009
Сообщений: 324
По умолчанию

быстрее всего ошибка возникает из-за того что в твоей function TForm1.ReadFromFile(FileName: string): string; каждый раз создаётся новый объект TStringList предварительно не уничтожив старый.
а не проще обработать один файл, записав его значения в базу, потом второй и т.д.
Тяжело быть бестолковым.....
Dark_Spirit вне форума
Старый 06.05.2010, 18:12   #9
kino
Пользователь
 
Регистрация: 16.12.2009
Сообщений: 13
По умолчанию

Я так и планирую делать!

Просто кусок кода, для записи данных в таблицу не писал еще...

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

Но косяк в том, что 1ый файл считывает, в нем находятся значения (далее по идеи они должны добавляться в таблицу), а при переходе ко 2ому файлу, вылезает ошибка! он даже не считывается.

Dark_Spirit, а как уничтожить старый объект TStringList? я думал об этом но не знаю как это сделать!
kino вне форума
Старый 06.05.2010, 19:02   #10
Dark_Spirit
Форумчанин
 
Аватар для Dark_Spirit
 
Регистрация: 05.02.2009
Сообщений: 324
По умолчанию

давай попробуй переделать таким образом:
Код:
 var  file_all:TStringList;
 begin
  for i:=0 to count_of_file-1 do
  begin
   file_all:=TStringlist.create; 
   try
    file_all:=LoadFromFile(FileName[i]);
    <тут выгрузка в memo>
    file_all.free;
   except
    file_all.free;
   end;
 end;
end;
вроде всё, я не проверял на ошибки
Тяжело быть бестолковым.....

Последний раз редактировалось Dark_Spirit; 06.05.2010 в 19:04.
Dark_Spirit вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Автоматизированное рабочее место Менеджера торгового отдела журнальной продукции ALASIL Фриланс 10 16.03.2010 11:38
Автоматизированное копирование данных выборки автофильтра на другой лист при помощи кнопки outstrip Microsoft Office Excel 0 12.08.2009 11:28
Автоматизированное заполнение документов KurtWagner Общие вопросы Delphi 11 20.01.2009 10:18