Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Заполнение данными из файла 
V
    Опции темы
_andrews_
Дата 7.3.2007, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Delphi 6, FibPlus, FireBird
Необходимо выгрузить данные из ВЫБРАННЫХ полей таблицы в текстовый файл, потом проделать че-нить с данными в БД, и если необходимо-загрузить сохраненные данные из текстового файла обратно (типа, резервное копирование)
Копировать всю БД не самый оптимальный вариант. Нужно именно в текстовый файла забить данные (только из одной таблицы и по выбраным полям), а потом при необходимости загрузить из него обратно.
Помогите, плиз
PM MAIL   Вверх
Rodman
Дата 7.3.2007, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


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

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



Код

var MyList:TStringList;
begin
 Query.SQL.clear;
 Query.SQL.Add('SELECT First, second, ten FROM MyTable;');
 Query.Open;
  MyList:=TStringList.Create;
  try
 while not Query.eof do
 begin
         MyList.Add(Query.Field[0].asstring+', '+Query.Field[1].asstring+', '+Query.Field[2].asstring);
         Query.NExt;
 end; 
 MyList.SaveToFile('MyFile.txt');
  finally
      MyList.Free;
  end; 
end;


вот для сброса данных из базы..
Так?
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Sovereign
Дата 7.3.2007, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



а не лучше описать запись, с типами полей, к примеру
Код

Type Dump = record
  name : String;//поля так как они у тебя в базе описаны
  age : integer;
    .....
end;


потом скидывать то что надо, либо считывать

Код

procedure ...
var fDmp : file of Dump;
      StrDMP : Dump;
begin
....
   StrDMP.name := ...
....
   write(fDmp,StrDMP);
end;


только файл будет совсем не текстовый

Это сообщение отредактировал(а) Sovereign - 7.3.2007, 14:33
PM MAIL   Вверх
_andrews_
Дата 8.3.2007, 03:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



а можно подетальней описать работу с записью...
вон там вот...
Код

begin
....
   StrDMP.name := ...
....
   write(fDmp,StrDMP);
end;


что вместо ........ должно ити?*
PM MAIL   Вверх
Sovereign
Дата 8.3.2007, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



к Примеру
Код

procedure ...    
var fDmp : file of Dump;    
      StrDMP : Dump;    
begin    
assignFile(fDmp,'dumpfile.dmp');
  rewrite(fDmp);
....    
   while not query.eof do begin
     StrDMP.name := query.fieldbyname('name').asstring;
     StrDMP.age :=query.fieldbyname('age').asinteger;    
    
     write(fDmp,StrDMP);    
   end;
closeFile(fDmp);
end;

паскалевский метод работы с файлами
PM MAIL   Вверх
_andrews_
Дата 8.3.2007, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



а как в компонентах FibPlus (pFibDataSet1) добраться до метода FieldByName?
не нашел чето...
PM MAIL   Вверх
Sovereign
Дата 9.3.2007, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



метод Fieldbyname замени тем, который там есть, просто тебе нужны поля как строка или как число
PM MAIL   Вверх
_andrews_
Дата 12.3.2007, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

type
  TDump = record
    HUMANNAME: String;
    FIRSTNAME: String;
  end;

  TFrm_MainEnDe = class(TForm)
    pFIBDB: TpFIBDatabase;
    pFIBDSHumans: TpFIBDataSet;
    ...............
    ...............
    ...............

....Это объявление записи....

Код

procedure TFrm_MainEnDe.BtnSaveDBWhClick(Sender: TObject);
var fDmp: File of TDump; //В ЭТОЙ СТРОКЕ ОШИБКА!!
      StrDMP: TDump;
begin

    assignFile(fDmp, Edit1.text);
    rewrite(fDmp);
   while not pFIBDSHumans.Eof do
   begin
     StrDMP.HUMANNAME := pFIBDSHumans.FBN('HUMANNAME').AsString;
     StrDMP.FIRSTNAME :=pFIBDSHumans.FBN('FIRSTNAME').AsString;
     write(fDmp,StrDMP);
   end;
  closeFile(fDmp);
end;


в выделенной строке выдает ошибку:
[Error] MainEnDe.pas(264): Type 'TDump' needs finalization - not allowed in file type

Что бы это значило?* (((

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


Шустрый
*


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

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



делай либо 
Код

type    
  TDump = record    
    HUMANNAME: String[32];    //до 255
    FIRSTNAME: String[32];    
  end;

либо
Код

type    
  TDump = record    
    HUMANNAME:  array [1..32] of Char;    
    FIRSTNAME:  array [1..32] of Char;    
  end;


Это сообщение отредактировал(а) Sovereign - 12.3.2007, 14:04
PM MAIL   Вверх
_andrews_
Дата 12.3.2007, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо большое за помощь.. Эта проблема решена!!
Делаю запись данными из файла в таблицу БД:
Код

procedure TFrm_MainEnDe.Button1Click(Sender: TObject);
var fDmp: File of TDump;
    StrDMP: TDump;
begin
    assignFile(fDmp,'C:\test.txt');
    Reset(fDmp);
    pFIBDSHumans.First;
    while not pFIBDSHumans.Eof do
    begin
       with pFIBDSHumans do
       begin
         Edit;
         FBN('HUMANNAME').AsString := StrDMP.HUMANNAME;
         Post;
         Edit;
         FBN('FIRSTNAME').AsString := StrDMP.FIRSTNAME;
         Post;
         Next;
       end;
   end;
   closeFile(fDmp);
end;


При этом Поля 
Код
'HUMANNAME'
 и 
Код
'FIRSTNAME'
 просто очищаются (Становятся пустыми). Что я делаю не так?*
PM MAIL   Вверх
Sovereign
Дата 12.3.2007, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



ну так а считываешь с файла где? =)
Код

procedure ...
var fDmp: File of TDump;
    StrDMP: TDump;
begin
    assignFile(fDmp,'C:\test.txt');
    Reset(fDmp);
    while not EOF(fDmp) do begin
    read(fDmp,StrDMP);  //или  read(StrDMP,fDmp) точно не помню
    //а потом StrDMP.HUMANNAME и StrDMP.FIRSTNAME записываешь куда тебе надо
    end;
  
    closeFile(fDmp);
end


PM MAIL   Вверх
_andrews_
Дата 12.3.2007, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



БЛИН!
точно! спасибо!! работет все!! урря!! Спасибо за советы! Наш форум круче всех! Серьезно...
Был на sql.ru там они токо острить могут!! )) а вот здесь мне не раз уже помогают!! Спасибо!

Это сообщение отредактировал(а) _andrews_ - 12.3.2007, 16:54
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.1081 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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