Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перенос информации из *.txt в Access 
:(
    Опции темы
Yuk
Дата 14.10.2006, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Помогите! Прага должна записывать инфу в базу данных Access из текстового файла который имеет вид:

ФИО
Адрес        блок
год
_
------------
_
ФИО
Адрес      блок
год
_
------------
-
ФИО
Адрес          блок
год
_
------------

очень много блоков smile!Мне нужно эти блоки внести в базу данных!

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


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



Ну к примеру для начала ты загружаешь файл 
Код

var filo:TStringList;
      i:integer;
begin
 filo:=TStringList.Create;
 filo.LoadFromFile('MyFile.txt');
 for i:=0 to filo.Count do
 begin
   //находишь нужный блок в filo[i]
   ADOQuery.ParamByName('PrmB').Value:=//тут нужный текст
  ADOQuery.ExecSQL;
 end;
end;


а в ADOQuery у тебя запрос
Код

INSERT INTO TableName (Adresss, ...) VALUES (:PrmB, :...) ;

PM MAIL WWW Skype GTalk YIM MSN   Вверх
Yuk
Дата 20.10.2006, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Опиши, пожалуйста поподробнее,а то я чето не доганяю(я раньше с БД не работал)!
Плиз!
PM MAIL   Вверх
Rodman
Дата 21.10.2006, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



Цитата(Yuk @  20.10.2006,  22:33 Найти цитируемый пост)
Опиши, пожалуйста поподробнее,а то я чето не доганяю(я раньше с БД не работал)!



прикольно...

тогда скажи ты не понял совсем ничего... или какую то часть???

ТЫ можешь из текстового файла выбирать необходимые данные???

PM MAIL WWW Skype GTalk YIM MSN   Вверх
Yuk
Дата 21.10.2006, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



У меня прага вообще не компилируется

Код

procedure TForm1.Button1Click(Sender: TObject);
var
        f:textfile;
        Name, Address, Phone:string;
begin
        assignfile(f,'d:\mydata.txt');
        reset(f);
try
        while not eof(f) do
        begin
                readln(f,name);
                readln(f,address);
                readln(f,year);
                ADOTable1.Insert;
                ADOTable1.FieldByName('NAME').AsString:=name;
                ADOTable1.FieldByName('ADDRESS').AsString:=address;
                ADOTable1.FieldByName('YEAR').AsString:=year;
                ADOTable1.Post;
        end;
finally
        closefile(f);
end;
end;


а на форме у меня кнопка, ADOConnection,ADOTable в коннекте я создал строку с Jet провайдером и файлом базы данных Access, в таблице сделал Fields: name,address,year. 
Что нужно изменить или сделать?

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


Новичок



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

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



а на что ругается?!
PM MAIL ICQ   Вверх
Yuk
Дата 21.10.2006, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Она вообще не компилится! Нажимаю на RUN и ноль реакции!
Подскажи может че в настройках надо поменять!
Я по этому и написал ПОМОГИТЕ может как нибудь по другому зделать!
Прага нужна по зарез!
ПОМОГИТЕ БЕДНОМУ СТУДЕНТУ!
PM MAIL   Вверх
Rodman
Дата 21.10.2006, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



Yuk, во первых пример я давал не с Table, а с Query... 

В нем должен быть запрос типа 
Код

    
INSERT INTO TableName (Adresss, NameUser, CurrYear) VALUES (:PrmAd, :PrmN, :PrmY) ;


Поля лучше переименуй на Adresss, NameUser, CurrYear, чтобы потом не было конфликта с именами, потому что Name и Year - зарезервированными словами могут быть..

и тогда в проге пиши...
Код

procedure TForm1.Button1Click(Sender: TObject);
var
        f:textfile;
        Name, Address, Phone:string;
begin
        assignfile(f,'d:\mydata.txt');
        reset(f);
try
        while not eof(f) do
        begin
                readln(f,name);
                readln(f,address);
                readln(f,year);
                ADOQuery.FieldByName('PrmN').AsString:=name;
                ADOQuery.FieldByName('PRmAd').AsString:=address;
                ADOQuery.FieldByName('PrmY').AsString:=year;
                ADOQuery.ExecSQL;
        end;
finally
        closefile(f);
end;
end;

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

если он все берет нормально, то все работать должно...


PM MAIL WWW Skype GTalk YIM MSN   Вверх
Yuk
Дата 22.10.2006, 01:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо, у меня все получилось!
А как можно перед добалением проверять наличие в базе инфы(унифицировать данные)
PM MAIL   Вверх
Rodman
Дата 23.10.2006, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



Пишешь запрос в ADOQuery типа
Код

SELECT Adresss, NameUser, CurrYear FROM TableName 
WHERE ((Adresss=:PrmA)and(NameUser=:PrmNU)and(CurrYear=:PrmCY));


а в делфях код типа 
Код

                ADOQuery.FieldByName('PrmNU').AsString:=name;
                ADOQuery.FieldByName('PRmA').AsString:=address;
                ADOQuery.FieldByName('PrmCY').AsString:=year;
                ADOQuery.Open;
                if(Length(ADOQuery.Fields.Fields[1].asstring)>0)then
                       Showmessage('Такая запись уже существует!!!');

PM MAIL WWW Skype GTalk YIM MSN   Вверх
Yuk
Дата 23.10.2006, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А можно использовать сразу и ADOTable и ADOQuery?
PM MAIL   Вверх
Rodman
Дата 23.10.2006, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



Можно конечно... но все таки ADOTable в основном для отображения данных, а ADOQuery для работы с ними...

Ты конечно можешь выбрать данные из базы с помощью ADOTable, а после проверки добавлять при помощи ADOQuery...

Конечно если ты это имел ввиду...

А использовать в одном проекте и то, и то можно... никто тебя ругать не будет... но вот функциональность будет прыгать...
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Akella
Дата 25.10.2006, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



Yuk, извини, что не в тему, но мне кажеться что тебе будет легче, если ты хабаря даш экзаменатору smile 
PM MAIL   Вверх
Rodman
Дата 25.10.2006, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



Akella, ты прям запутать его хочешь... Не известно знает ли он как с хабарем обращаться... smile  smile  smile  smile 
PM MAIL WWW Skype GTalk YIM MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.1750 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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