Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.09.26;
Скачать: [xml.tar.bz2];

Вниз

Проблема с 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.035 c
4-1092391148
DimaB
2004-08-13 13:59
2004.09.26
Как создать виртуальный ком порт?


14-1094475774
GRAND25
2004-09-06 17:02
2004.09.26
Реализация БД-приложений


1-1094637857
jonik
2004-09-08 14:04
2004.09.26
Форма с Настройками программы


3-1093865375
Koala
2004-08-30 15:29
2004.09.26
Поиск в представлении


6-1089980482
Катерина
2004-07-16 16:21
2004.09.26
FTP





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