| imho.ws |
![]() |
|
|
|
# 1 |
|
Newbie
Регистрация: 26.04.2005
Сообщения: 22
![]() |
Delphi. Из текстового файла в базу Access.
Всем привет!
Догадываюсь, что вопрос - элементарный, тем не менее очень нужна помощь. Требуется перегнать текстовый файл в базу Access. Текстовый файл представляет собой: ... текст <разделитель> текст <разделитель> ... В базе все это дожно выглядеть, как множество записей, содержащих этот самый текст... Никак не могу разобраться с ADO. Связь с базой установил. Может кто подскажет где можно посмотреть исходник аналогичной программки, или как написать событие для кнопки? |
|
|
|
|
# 2 |
|
Advanced Member
Регистрация: 23.08.2003
Сообщения: 442
![]() ![]() |
если Connection есть осталось написать запрос для вставки для чего вешаем на форму TADOQuery. в его Connection пишеш свою Connection. в запросе ( свойство SQL ) пишеш insert into имя_таблицы (список полей, разделенный ,) values(тот же список, только перед каждым элементом поставить ':' )
ну а потом в цикле для всех записей делаеш query->ParamByName(то, что после ':')->Value = значение ... query->ParamByName(то, что после ':')->Value = значение и query->ExecSQL() |
|
|
|
|
# 3 | |||
|
Newbie
Регистрация: 26.04.2005
Сообщения: 22
![]() |
Цитата:
К сожалению, плохо ориентируюсь в вопросе, поэтому нельзя ли по-подробней: Цитата:
insert into ADOTable1('Номер записи','Текст')values(':Номер записи',':Текст') так? Цитата:
Еще раз прошу меня извинить за ламерство. Просто появилась срочная необходимость в создании такой программы, а обратиться не к кому... |
|||
|
|
|
|
# 4 | |
|
Advanced Member
Регистрация: 23.08.2003
Сообщения: 442
![]() ![]() |
Код:
insert into ADOTable1 (Номер записи, Текст) values(:Номер записи, :Текст') Цитата:
вот после того, как отдну строку прочитал и пишеш... ( адаптирую: ) Код:
ADOQuery1.ParamByName('Номер записи')->Value = значение
ADOQuery1.ParamByName('Текст')->Value = значение
ADOQuery1.ExecSQL();
а так ли тебе нужно импортировать програмно ( учитывая сложность базы ( точнее ее отсутствие ) и сложность реализации ) может проще самим аксесом импортировать? |
|
|
|
|
|
# 5 |
|
Newbie
Регистрация: 26.04.2005
Сообщения: 22
![]() |
Код:
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, DB, ADODB, FMTBcd, SqlExpr; Код:
procedure TForm1.Button1Click(Sender: TObject);
var
FileSource : textfile;
str : string;
buf : string;
x:integer;
y: string;
begin
assignfile(filesource,'1.txt');
reset(filesource);
while not eof(filesource) do begin
inc(x);
y:=IntToStr(x);
repeat
readln(filesource,str);
buf:=buf+str;
Until Str=razdel;
ADOQuery1.ParamByName('Номер записи')->Value = y;
ADOQuery1.ParamByName('Текст')->Value = buf;
ADOQuery1.ExecSQL();
end;
CloseFile(filesource);
end;
Последний раз редактировалось FRiker; 18.10.2005 в 11:02. |
|
|
|
|
# 7 |
|
Newbie
Регистрация: 26.04.2005
Сообщения: 22
![]() |
2dyr_farot огромное спасибо за терпение!
Давай уж добьем до конца? Значит, исправил, получилось: Код:
ADOQuery1.Parameters.ParamByName('Номер записи')->Value = y;
Код:
-> Посмотри, пожалуйста внимательно на процедуру выше: возможно там я что-то не дописал или написал не так. |
|
|
|
|
# 9 |
|
Newbie
Регистрация: 26.04.2005
Сообщения: 22
![]() |
Наконец-то скомпилировалась!
Однако, при нажатии кнопки вылетает с ошибкой: "Ошибка синтаксиса insert into", которое у меня выглядет так: Код:
insert into ADOTable1(Номер записи, Текст) values(:Номер записи, :Текст) Последний раз редактировалось FRiker; 18.10.2005 в 13:38. |
|
|
|
|
# 10 |
|
Advanced Member
Регистрация: 23.08.2003
Сообщения: 442
![]() ![]() |
есть у меня подозрение, что аксес не принимает ( просто так ) имена полей с пробелами -- засунь его в квадаратные скобки:
insert into ADOTable1([Номер записи], Текст) values(:[Номер_записи, :Текст) + ( только щас дошло ) у тебя в базе таблица как зовется? ADOTable1 это ( как я понимаю ) в делфи имя таблицы... |
|
|
|
|
# 14 | |
|
Newbie
Регистрация: 26.04.2005
Сообщения: 22
![]() |
Цитата:
Просто убрал счетчик из запроса: Код:
insert into Эдельвейс(Num, Text) values(:Num, :Text) Код:
insert into Эдельвейс(Text) values( :Text) |
|
|
|