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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2011, 10:42   #1
neonex
Пользователь
 
Регистрация: 06.05.2011
Сообщений: 15
По умолчанию Работа с БД и файлами

имеется кнопка и 2 Adoquery с адоконекшнами. при нажатии на кнопку выполняется такой код
Код:
procedure Totchet.Button2Click(Sender: TObject);
var
i,k: integer;
n:string;
num,usl,dat,time: string;
begin
ADOQuery1.First;
for i := 0 to ADOQuery1.RecordCount-1 do

begin
n:= ADOQuery1.FieldByName('numCard').AsString;

ADOQuery2.Active:= false;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Text:='SELECT * FROM personUse WHERE numCard="'+n+'"';
ADOQuery2.Active:= true;

for k:= 0 to ADOQuery2.RecordCount-1 do begin

num:= ADOQuery2.fieldbyname('numCard').AsString;
usl:= ADOQuery2.fieldbyname('whatUse').AsString;
dat:= ADOQuery2.fieldbyname('data').AsString;
time:= ADOQuery2.fieldbyname('time_use').AsString;
ADOQuery2.Next;
WriteOtch('Посещение №'+inttostr(k+1)+' Карта №'+num+'  #'+usl+'#  '+dat+'  '+time+'',otch);// запись данных в файл
ADOQuery1.Next;
end;


WriteOtch('===============================================================',otch);


end;
Все вроде замечтательно, но есть единственное НО , последняя запись из Adoquery заносится много раз подряд, чего делать подскажите
neonex вне форума Ответить с цитированием
Старый 31.05.2011, 11:47   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

И это скомпилировалось?
Код:
ADOQuery2.Next;
WriteOtch('Посещение №'+inttostr(k+1)+' Карта №'+num+'  #'+usl+'#  '+dat+'  '+time+'',otch);// запись данных в файл
END;
ADOQuery1.Next;
end;
Где то дальше похоже лишний END есть.
А циклы мне кажется предпочтительней делать так:
Код:
ADOQuery.First;
while not ADOQuery.Eof do begin
  ...
  ADOQuery.Next;
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 31.05.2011 в 11:50.
Аватар вне форума Ответить с цитированием
Старый 31.05.2011, 12:05   #3
neonex
Пользователь
 
Регистрация: 06.05.2011
Сообщений: 15
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
И это скомпилировалось?
Код:
ADOQuery2.Next;
WriteOtch('Посещение №'+inttostr(k+1)+' Карта №'+num+'  #'+usl+'#  '+dat+'  '+time+'',otch);// запись данных в файл
END;
ADOQuery1.Next;
end;
да, я прост не показал что WriteOtch это:
Код:
/////Функция ведения отчета в файл
function WriteOtch(otch : string; f : string): string;
var
  otchs : TStringList;

begin
  otchs := TStringList.Create;
  if (FileExists(Pchar(f))) then
  begin
    otchs.LoadFromFile(Pchar(f));
    otchs.Add('--> '+otch);
    otchs.SaveToFile(f);
  end
  else
  begin
    otchs.Add('--> '+otch);
    otchs.SaveToFile(f);
  end;
  otchs.Free;
end;
Твоя помощь просто неоценима, после замены If'ов на while not проблема решилась. Спасибо.
neonex вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с файлами чес Помощь студентам 1 02.04.2011 23:13
Работа с файлами С++ Malz Помощь студентам 1 23.03.2011 23:45
Работа с файлами Kazik Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 18.05.2010 11:12
Работа с файлами NightFire Паскаль, Turbo Pascal, PascalABC.NET 5 17.05.2009 21:47