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

Вниз

Проблема с ADODataSet   Найти похожие ветки 

 
Yakudza ©   (2004-08-28 13:03) [0]

Подскажите в чем может быть проблеме, когда dset.Close; закрываеться MainDataSet !

procedure MainDataSetAfterScroll(DataSet: TDataSet);
var
 dset : TADODataSet;
begin
 if dset = nil then
 begin
   dset.Create(self);
 end;

 dset.Close;
 dset.CommandType := cmdText;
 dset.CommandText := "SELECT id FROM table WHERE eid = :ID";
 dset.Parameters.Items[0].Value := MainDataSet.FieldByName("id").AsInteger;
 try
   dset.Open;
 except
   //
 end;
end;


 
Nikolay M. ©   (2004-08-28 13:08) [1]


>  if dset = nil then
>  begin
>    dset.Create(self);
>  end;

Ты хоть понял сам, что тут написал? Или специально моделируешь непредсказуемое поведение программы и AV?


 
Yakudza ©   (2004-08-28 13:14) [2]

Обьясни.


 
Nikolay M. ©   (2004-08-28 13:21) [3]


>  if dset = nil then
>  begin
>    dset.Create(self);
>  end;

Тебе не кажется, что это аналогично следующему:

if dset = nil then
 nil.Create(self);

?


 
Yakudza ©   (2004-08-28 13:32) [4]

А как проверить создали уже обьект или нет ?


 
Yakudza ©   (2004-08-28 13:33) [5]

Вот что еще не понятно если делать dset.Create(self); то ругаеться что MainDataSet уже есть но почему не ругаеться что dset уже есть ?


 
Yakudza ©   (2004-08-29 01:43) [6]

Кто-нибуть обьясните где непонятка, а то так и помру неучем.


 
DiamondShark ©   (2004-08-29 10:47) [7]

Давай так. Ты забываешь про весь свой код и описываешь ПО-РУССКИ чего ты хочешь получить.


 
KSergey ©   (2004-08-29 12:52) [8]

Вообще-то, [7] DiamondShark как всегда прав, однако чтобы больше такого не писать  - настоятельно советую прочитать
http://www.delphikingdom.com/helloworld/runtime_comp.htm


 
Yakudza ©   (2004-08-30 00:21) [9]

Хочу сделать следующее:
В событии AfterScroll "главного" датасета (dsMain : TADODataSet) хочу, при некоторых условиях, создать, если еще не сорздан еще один датасет, сделать запрос, показать его и т.д.


 
sniknik ©   (2004-08-30 08:38) [10]

> при некоторых условиях, создать, если еще не сорздан еще один датасет, сделать запрос, показать его и т.д.
dset у тебя локальная переменная она в любом случае не создана. (есть конечно оговорка, раз уж это не просто переменная а рекордсет, он еще к колекции конекта прописывается, но переменная то тут не причем так проверять нельзя нужно в той колекции и искать)

а делается это обычно так
dset:= TADODataSet.Create(self);
try
 //код,... показать его и т.д.
finally
 dset.free;
end
(если нужно оставить рекордсет после процедуры то уж не делай его локальным)



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

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

Наверх




Память: 0.46 MB
Время: 0.036 c
3-1093518855
Marat
2004-08-26 15:14
2004.09.26
Максимальное количество столбцов


4-1091191488
dms_main
2004-07-30 16:44
2004.09.26
Имя текущего пользователя системы


14-1094315260
olookin
2004-09-04 20:27
2004.09.26
Rammstein - Mein teil.


9-1086032491
Vin_Ghost
2004-05-31 23:41
2004.09.26
DelphiX Game: спрайтовое окно


14-1094559838
}|{yk
2004-09-07 16:23
2004.09.26
Влияние изменения интеллектуального капитала





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