Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];




Вниз

Как сохранить из DBGrid? 


Guitar ©   (2004-12-22 10:08) [0]

Уважаемые мастера, ответьте, пожалуйста, на мой вопрос.
У меня ADOQuery1 из БД получает данные, далее данные через DataSource1 передаются в DBGrid1. Можно ли как-то эти данные сохранить в текстовом файле txt? Какой компонент для этого использовать, и какой код?



Соловьев ©   (2004-12-22 10:17) [1]

Никакого компонета. Стандартная конструкция:
while not ADOQuery1.Eof do
begin
//код сохранения текущей записи в текстовый файл, Write procedure (for text files) + F1
ADOQuery1.Next;
end;



Александр Иванов ©   (2004-12-22 10:30) [2]

var f:text;i:integer;Str:string;
begin
 AssignFile(f,"ff.txt");
 Rewrite(f);
 ADOQuery1.First;
 while not ADOQuery1.eof do
   begin
      Str:="";
      for i:=0 to ADOQuery1.FieldCount do
        Str:=Str+"""+ ADOQuery1.Fields[i].AsString;
      WriteLn(f,Str);
      ADOQuery1.Next;
   end;
 CloseFile(f);
end;



Guitar ©   (2004-12-22 10:47) [3]

Большое спасибо за этот совет. Но мне нужен диалог с пользователем. Я решил использовать стандартный компонент.
Вот код:

procedure TForm1.Button6Click(Sender: TObject);
var
fname :string;
begin
fname:=edit6.text;
savedialog1.filename:=fname;
if savedialog1.Execute then
 begin
  fname:=edit6.text;
  adoquery1.SaveToFile(fname);
 end;
end
;

Но у меня в файл вывелись какие-то крякозябрики. Что у меня не так? И ещё файл почемуто сохранился без разрешения, как сделать, чтобы он с разрешением сохранялся?



Александр Иванов ©   (2004-12-22 10:52) [4]

var f:text;i:integer;Str:string;
begin
if SaveDialog1.Execute then
  AssignFile(f,SaveDialog1.FileName);

Rewrite(f);
ADOQuery1.First;
while not ADOQuery1.eof do
  begin
     Str:="";
     for i:=0 to ADOQuery1.FieldCount do
       Str:=Str+"""+ ADOQuery1.Fields[i].AsString;
     WriteLn(f,Str);
     ADOQuery1.Next;
  end;
CloseFile(f);
end;



Guitar ©   (2004-12-22 11:02) [5]

ПОчему то не нравится
f: text;

Ошибку выводит.



Guitar ©   (2004-12-22 11:06) [6]

Пишет.

[Error] Unit1.pas(802): Constant or type identifier expected



Guitar ©   (2004-12-22 11:16) [7]

С прошлым вопросом я разобрался сам. ))) Не надо думать, что я тупой, я учусь.

А вот дальше при компилляции ошибок не находит. Но когда начинаю сохранять сам файл, то вылетае прога, так как находит ошибку. Указывает вот на эту строчку

 Str:=Str+"""+ ADOQuery1.Fields[i].AsString;

А код ошибки вот

...raised exception class EListError with message "List index out of bounds (3). Process stopped. Use Step or Run to continue.

Тут я уже не в состоянии определить в чём дело. Помогите.



Плохиш ©   (2004-12-22 11:18) [8]

for i:=0 to ADOQuery1.FieldCount-1 do



Guitar ©   (2004-12-22 11:27) [9]

Да!!! КРУТО!!!




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.056 c
1-1104942237      msgipss               2005-01-05 19:23  2005.01.23  
timer в треде вешается, объясните чайнику


14-1104569831     Sergey_Masloff        2005-01-01 11:57  2005.01.23  
Текс-текс смотрим кто вчера злоупотребил ;-)


1-1105448371      nap                   2005-01-11 15:59  2005.01.23  
лексический анализатор


1-1105442099      Meneee                2005-01-11 14:14  2005.01.23  
Excel


3-1103629763      sesh                  2004-12-21 14:49  2005.01.23  
Excel --> Database