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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.08.2012, 11:56   #1
Critically
Пользователь
 
Регистрация: 14.08.2012
Сообщений: 17
По умолчанию Вывод в txt, после нажатия кнопок DBNavigator

Здравствуйте, может привести пример кода, как можно выводить в txt файл изменения зафиксированные после нажатия кнопок в DBNavigator вида: AfterPost, AfterInser и т.д. Часть кода программы прилагаю...

З.Ы. DBNavigator работает с DBGrid в котором отображается таблица MSSQL 2005 Espress. Суть проблемы такова: Когда делаем какие либо изменения в таблице с помощью DBNavigator нужно выводить эти изменения в тхт.


1.jpg

Последний раз редактировалось Critically; 16.08.2012 в 12:03. Причина: Добавление информации
Critically вне форума Ответить с цитированием
Старый 16.08.2012, 12:31   #2
astecenko
Homo Interneticus
Форумчанин
 
Аватар для astecenko
 
Регистрация: 04.03.2011
Сообщений: 611
По умолчанию

Создайте глобальный объект класса TStringList, в обработчики событий которые нужно логировать добавьте добавление строк в созданный объект. Для сохранения в файл используется стандартный метод TStringList.SaveToFile
astecenko вне форума Ответить с цитированием
Старый 16.08.2012, 12:38   #3
Critically
Пользователь
 
Регистрация: 14.08.2012
Сообщений: 17
По умолчанию

Цитата:
Сообщение от astecenko Посмотреть сообщение
добавьте добавление строк в созданный объект.
Будте так любезны, если вам не сложно напишите это кодом, мне не совсем понятно...
Critically вне форума Ответить с цитированием
Старый 16.08.2012, 12:49   #4
astecenko
Homo Interneticus
Форумчанин
 
Аватар для astecenko
 
Регистрация: 04.03.2011
Сообщений: 611
По умолчанию

Код:
//в начале модуля
var //это у вас уже есть
  Form1:TForm1; //это у вас уже есть
  List1:TStringList; //это добавляем
...
//в обработчике OnCreate формы
List1:=TStringList.Create;
...
//и далее там где надо занести запись в журнал действий,
//добавляем строки через List1.Add('строка')
//например
prоcedure TForm1.ADOQuery1AfterPost(DataSet:TDataSet);
  begin
    List1.Add('Изменения внесены');
  end;

//сохранение
procedure TForm1.Button2Click(Sender: TObject);
  begin
    List1.SaveToFile('c:\file.txt');
  end;
...
//в OnClose главной формы добавьте, хотя можете и не добавлять...
FreeAndNil(List1);
На будущее, выкладывайте свой код (текст кода, тут даже кнопочка специальная в редакторе есть), а не снимок экрана редактора IDE
astecenko вне форума Ответить с цитированием
Старый 16.08.2012, 12:58   #5
Critically
Пользователь
 
Регистрация: 14.08.2012
Сообщений: 17
По умолчанию

Это я понял... list1.add('Изменения внесены');

А как в list1.add прописать то что изменилось в таблице ?

Ну например у нас есть таблица там поля name и age, мы берем и удаляем первую запись Петров П.П. 23.. Как прописать что бы в txt файле было что то типа: "Из базы удалено Петров П.П. 23"
Critically вне форума Ответить с цитированием
Старый 16.08.2012, 13:33   #6
Critically
Пользователь
 
Регистрация: 14.08.2012
Сообщений: 17
По умолчанию

Никто не поможет больше ?
Critically вне форума Ответить с цитированием
Старый 16.08.2012, 16:19   #7
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Когда компонент обновляет данные внутри себя, вызывайте SaveToFile свой. И Все.
Человек_Борща вне форума Ответить с цитированием
Старый 16.08.2012, 17:21   #8
Critically
Пользователь
 
Регистрация: 14.08.2012
Сообщений: 17
По умолчанию

Получилось как то так... Всем спасибо кто помог...

PHP код:
procedure TForm1.Button8Click(SenderTObject);
begin
try
v:=DataSource1.DataSet.Fields[1].AsInteger;
ADOQuery1.Edit;
ADOQuery1.FieldByName('Name').AsString:=Edit1.Text;
ADOQuery1.FieldByName('Age').AsString:=Edit2.Text;
ADOQuery1.FieldByName('Salary').AsString:=Edit3.Text;
Edit1.Clear;
Edit2.Clear;
Edit3.Clear;
        
i:=DataSource1.DataSet.Fields[0].AsString;
        
z:=DataSource1.DataSet.Fields[1].AsInteger;
        
c:=DataSource1.DataSet.Fields[2].AsString;
        if 
z<v then
        begin
        sum
:=v-z;
        
animals.Add('УДАЛЕНО:  '+i+'| Количество:'+IntToStr(sum)+'| Цена:'+c);
        
end;
        if 
z>v then
        begin
        sum
:=z-v;
        
animals.Add('ДОБАВЛЕНО:  '+i+'| Количество:'+IntToStr(sum)+'| Цена:'+c);
        
end;
except
on e
:Exception do
end;
animals.SaveToFile('C:\' + DateTimeToStr(Date) + '.txt');
end; 
Critically вне форума Ответить с цитированием
Старый 16.08.2012, 18:02   #9
Sm1Le
Форумчанин
 
Аватар для Sm1Le
 
Регистрация: 31.10.2008
Сообщений: 500
По умолчанию

а что если
Код:
z=v
Skype : UASm1Le.
Sm1Le вне форума Ответить с цитированием
Старый 17.08.2012, 14:02   #10
Critically
Пользователь
 
Регистрация: 14.08.2012
Сообщений: 17
По умолчанию

Ну тогда добавим что ничего не произошло ))
Critically вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сообщения нажатия кнопок decantnik Win Api 2 12.04.2012 19:23
Вывод MessageBox после тройного и более нажатия ЛКМ RAZOR1703 Win Api 10 18.10.2011 19:23
Обработка нажатия кнопок мыши turbovitalik Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 12.09.2011 08:49
C#: передача нажатия кнопок в браузер Savrik Общие вопросы .NET 3 13.06.2009 00:07