Форум: "Базы";
Текущий архив: 2003.09.25;
Скачать: [xml.tar.bz2];
ВнизНе срабатывают события 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.009 c