Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.25;
Скачать: CL | DM;

Вниз

Не срабатывают события TADOQuery   Найти похожие ветки 

 
АлеКс   (2003-09-03 04:13) [0]

Добрый день господа!
У меня возник еще один вопрос по ODBC.

Получаю данные через ODBC использую компоненты
ADOCon: TADOConnection;
ADOQuery1: TADOQuery;

и строку ConnectionString:= Provider=MSDASQL.1;Persist Security Info=False;Connect Timeout=15;Extended Properties="DSN=Файлы FoxPro - Word;UID=;SourceDB=c:\Brd2003\DBF;SourceType=DBF;Exclusive=No;Backgrou ndFetch=No;Collate=Machine;Null=Yes;Deleted=Yes;";Locale Identifier=1049

Так вот у меня есть желание при добавлении данных в DataSet изменять значение одного поля.
Насколько я понял для этого служит событие

procedure TMainForm.ADOQuery1WillChangeField(DataSet: TCustomADODataSet;
const FieldCount: Integer; const Fields: OleVariant;
var EventStatus: TEventStatus);

Однако оно не срабатывает. Причем не срабатывают и некоторые другие события.
В чем может быть загвостка.

Спасибо.


 
KSergey ©   (2003-09-03 08:07) [1]

ПРи добавлении записи происходят два события: BeforeInsert и AfterInsert. Возможно именно в адошных компонентах есть еще какие-то события, соответствующие этим. Смотреть лень.


 
sniknik ©   (2003-09-03 08:25) [2]

> Однако оно не срабатывает. Причем не срабатывают и некоторые другие события.
> В чем может быть загвостка.
считаеш одно событие за другое и ждеш его не в том месте/случае.


 
АлеКс   (2003-09-03 09:20) [3]

Скорей всего так и есть. Тогда подскажите в каком месте мне можно перехватьть добавление записи в DataSet так чтобы откорректировать поле последней добавленной записи.


 
АлеКс   (2003-09-03 09:31) [4]

А вобще весь сырбор вот по какому поводу.
Мне необходимо выбрать из нескольких таблиц FoxPro некоторые данные и поместить их в таблицу Access.
Задача осложняется тем что почемуто русские буквы при получении данных искажаются (дело в кодировке) и теперь мне необходимо при получении данных отслеживать каждую запись для преобразования в новую кодировку.


 
АлеКс   (2003-09-03 10:13) [5]

Я статейку нашел так вот там говорится что перечисленные мной выше события должны выполнятся при активизации TADOQuery.
http://www.interface.ru/fset.asp?Url=/borland/ado2.htm


 
KSergey ©   (2003-09-03 10:15) [6]

Как именно помещаются данный в аксес?
Пример кода


 
АлеКс   (2003-09-03 10:19) [7]

Я хотел бы например с помощью TADOQuery создать запрос и выполнить его а полученные данные поместить в таблицу Access.


 
АлеКс   (2003-09-03 10:23) [8]

Интересно а можно в SELECT указать куда должны папасть данные.


 
АлеКс   (2003-09-03 10:27) [9]

Вот пример плохого кода который у меня получился и все из-за того что у меня не сробытывает событие.
MainForm.ADOQuery1.Active:=true;
MainForm.ADOQuery1.First;
while not MainForm.ADOQuery1.Eof do begin
MainForm.ADOTable1.AppendRecord([
MainForm.ADOQuery1.FieldByName("dtraspr").value,
MainForm.ADOQuery1.FieldByName("summaraspr").value,
MainForm.ADOQuery1.FieldByName("inn").value,
MainForm.ADOQuery1.FieldByName("ubudj").value,
MainForm.ADOQuery1.FieldByName("dohod").value,
DosToWin(MainForm.ADOQuery1.FieldByName("sname").AsString)]);
MainForm.ADOQuery1.Next;
end;

функция DosToWin просто перекодирует строку.
Если работать через событие при добовлении записи в Qery то не пришлосьбы городить эту чуш.


 
sniknik ©   (2003-09-03 10:27) [10]

попробуй так
SELECT * INTO TableAccess FROM TableDBF IN "D:\" "dBASE IV;"
если не пройдет (перекодировка), измени значение реестра
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Xbase.DataCodePa ge = OEM или ANSI


 
АлеКс   (2003-09-04 03:25) [11]

Вот текст маего запроса

SELECT t_oper_r.dtraspr, t_oper_r.summaraspr, s_korr.inn, m_budj.ubudj,
s_dohod.dohod, s_korr_1.sname
FROM ((((t_oper_r LEFT JOIN main3
ON t_oper_r.main3 = main3.link) LEFT JOIN s_korr
ON t_oper_r.korr = s_korr.link) LEFT JOIN m_budj
ON t_oper_r.budj = m_budj.link) LEFT JOIN s_dohod
ON t_oper_r.dohod = s_dohod.link) LEFT JOIN s_korr AS s_korr_1
ON main3.imns = s_korr_1.link;


 
АлеКс   (2003-09-04 08:42) [12]

То что предложил sniknik © в принципе срабатывает однако "dBase IV" и все остальные пытаются открыть индекс и говорят что его нет. В реестре я посматрел и нашел расширения для индексных файлов а для FoxPro индексные файлы с расширением "*.cdx" что делать? может можно отключить.



Страницы: 1 вся ветка

Текущий архив: 2003.09.25;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.021 c
1-82238
drakulita
2003-09-11 17:31
2003.09.25
Премещение файла


3-82120
Unknow
2003-09-06 21:01
2003.09.25
Подсчитать кол-во записей


14-82447
Soft
2003-09-07 13:58
2003.09.25
Что такое ЗЛО?


14-82433
Vt
2003-09-08 07:13
2003.09.25
Можно ли определить на каком языке написан


7-82527
snake7
2003-07-14 18:38
2003.09.25
Как узнать серийный номер винта