Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.011 c
14-82384
Dilezzz
2003-09-07 21:59
2003.09.25
Когда выйдет SP2 для WinXP?


14-82424
Романов Р.В.
2003-09-08 16:46
2003.09.25
Не печать в MS Word


3-82092
Vitalygavrilov
2003-09-05 10:27
2003.09.25
Как перехватить сообщение о конфликтной ситуации?


7-82529
Snake7
2003-07-14 18:35
2003.09.25
Как узнать серийный номер процессора?


1-82234
Nur
2003-09-10 06:28
2003.09.25
Национальная кодировка





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский