Главная страница
    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
7-82516
Alibaba
2003-07-01 12:00
2003.09.25
Word


3-82088
Bezpal
2003-09-05 12:11
2003.09.25
Подскажите кто скока может как связать Delphi 5 и SQL Server 7.0


3-82163
Centurion
2003-09-03 11:50
2003.09.25
Реиндексация парадоксовской БД


1-82306
Regul
2003-09-11 21:04
2003.09.25
Microsoft Equation


3-82037
Хлам
2003-09-03 10:31
2003.09.25
Вопрос по SQL...Скорей всего простейший





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский