Поиск:

Ответ в темуСоздание новой темы Создание опроса
> with TSimpleDataSet.Create(Self) do, Ошибка при Active:=true; 
:(
    Опции темы
Dolphinchik
Дата 21.2.2009, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 24.7.2006
Где: Филлипины

Репутация: нет
Всего: нет



Доброго времени суток, уважаемые винградовцы!
Просьба дать подсказку по ошибке.
Существует следующий код:

Код

function TMainForm.OnClicFind(FindType: String):boolean;
var
  Param_DataSource: TDataSource;
  Param_SimpleDataSet: TSimpleDataSet;
  TEST_Label: TLabel;
  x,y,a,b : integer;   // координаты и размеры создаваемого объекта
  i: integer;

...

   while not Param_SimpleDataSet.Eof do
   begin
     if Param_SimpleDataSet.FieldByName(FindType).AsInteger=1 then
     begin
        // TSimpleDataSet
          with TSimpleDataSet.Create(Self) do
          begin
            Name := 'SimpleDataSet_'+(Param_SimpleDataSet.FieldByName('parambox_field').AsString);
            Connection := MainForm.SQLConnection1;
            DataSet.CommandType := ctTable;
            DataSet.CommandText := Param_SimpleDataSet.FieldByName('parambox_field').AsString;
            DataSet.Active := true;
            Active := true;
          end;
          // TDataSource
          with TDataSource.Create(Self) do
          begin
            Name := 'DataSource_'+(Param_SimpleDataSet.FieldByName('parambox_field').AsString);
            Enabled := true;
            AutoEdit := true;
          end;
          // TLabel
          with TLabel.Create(Self) do
          begin
            Name := 'Label_'+(Param_SimpleDataSet.FieldByName('parambox_field').AsString);
            Caption := Param_SimpleDataSet.FieldByName('parambox_name').AsString;
            Parent := MainForm.GroupBox2;
            Left := x;
            Top := y;
            Width := a;
            Height := b;
          end;
        //TDBLookUpComboBox
          with TDBLookUpComboBox.Create(Self) do
          begin
            Name := 'DBLookUpComboBox_'+(Param_SimpleDataSet.FieldByName('parambox_field').AsString);
            Caption := Param_SimpleDataSet.FieldByName('parambox_name').AsString;
            Parent := MainForm.GroupBox2;
            ListSource.DataSet.Name := 'DataSource_'+(Param_SimpleDataSet.FieldByName('parambox_field').AsString);
            ListField := ListSource.DataSet.Fields[1].FieldName;
            KeyField := ListField;
            Left := x+80;
            Top := y;
            Width := a;
            Height := b;
          end;
     end
     else if Param_SimpleDataSet.FieldByName(FindType).AsInteger=2 then
     begin
        // TSimpleDataSet
          with TSimpleDataSet.Create(Self) do
          begin
            Name := 'SimpleDataSet_'+(Param_SimpleDataSet.FieldByName('parambox_field').AsString);
            Connection := MainForm.SQLConnection1;
            DataSet.CommandType := ctTable;
            DataSet.CommandText := Param_SimpleDataSet.FieldByName('parambox_field').AsString;
            DataSet.Active := true;
            Active := true;
          end;
          // TDataSource
          with TDataSource.Create(Self) do
          begin
            Name := 'DataSource_'+(Param_SimpleDataSet.FieldByName('parambox_field').AsString);
            Enabled := true;
            AutoEdit := true;
          end;
          // TLabel A
          with TLabel.Create(Self) do
          begin
            Name := Param_SimpleDataSet.FieldByName('parambox_field').AsString;
            Caption := Param_SimpleDataSet.FieldByName('parambox_name').AsString+' от';
            Parent := MainForm.GroupBox2;
            Left := x;
            Top := y;
            Width := a;
            Height := b;
          end;
        //TDBLookUpComboBox A
          with TDBLookUpComboBox.Create(Self) do
          begin
            Name := 'DBLookUpComboBox_A_'+(Param_SimpleDataSet.FieldByName('parambox_field').AsString);
            Caption := Param_SimpleDataSet.FieldByName('parambox_name').AsString;
            Parent := MainForm.GroupBox2;
            ListSource.DataSet.Name := 'DataSource_'+(Param_SimpleDataSet.FieldByName('parambox_field').AsString);
            ListField := ListSource.DataSet.Fields[2].FieldName;
            KeyField := ListField;
            Left := x+80;
            Top := y;
            Width := a;
            Height := b;
          end;
          //TDBLookUpComboBox B
          with TDBLookUpComboBox.Create(Self) do
          begin
            Name := 'DBLookUpComboBox_B_'+(Param_SimpleDataSet.FieldByName('parambox_field').AsString);
            Caption := Param_SimpleDataSet.FieldByName('parambox_name').AsString;
            Parent := MainForm.GroupBox2;
            ListSource.DataSet.Name := 'DataSource_'+(Param_SimpleDataSet.FieldByName('parambox_field').AsString);
            ListField := ListSource.DataSet.Fields[2].FieldName;
            KeyField := ListField;
            Left := x+80;
            Top := y;
            Width := a;
            Height := b;
          end;
     end;
     Param_SimpleDataSet.Next;
     y:=y+40;
   end;


Ошибка возникает вот здесь при Active := true;

Код

with TSimpleDataSet.Create(Self) do
          begin
            Name := 'SimpleDataSet_'+(Param_SimpleDataSet.FieldByName('parambox_field').AsString);
            Connection := MainForm.SQLConnection1;
            DataSet.CommandType := ctTable;
            DataSet.CommandText := Param_SimpleDataSet.FieldByName('parambox_field').AsString;
            DataSet.Active := true;
            Active := true; //здесь возникает ошибка!
          end;




Самостоятельно, к сожалению, разобраться не смогла, подскажите, пожалуйста, в чем может быть проблема. 
Ошибка: 'Access violation...'.


PM MAIL MSN   Вверх
Akella
Дата 21.2.2009, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



хз... может нужно явно указать родителя и владельца.
PM MAIL   Вверх
Dolphinchik
Дата 21.2.2009, 23:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 24.7.2006
Где: Филлипины

Репутация: нет
Всего: нет



Я так поняла что ошибках в самих драйверах dbExpress, я работаю в Delphi 2009/dbExpress/MySQL.
Переместила папку dbExpress с файлом dbxconnections.ini в директорию проекта, все настроила и SQLConnection1 исправно работал, в реестре прописала в HKEY_LOCAL_MACHINE\SOFTWARE\CodeGear\BDS\6.0\DBExpress:

Driver Registry File - D:\WorkSpace\Delphi\dbExpress\dbxdrivers.ini
DLLPATH - D:\WorkSpace\Delphi\dbExpress
Connection Registry File - D:\WorkSpace\Delphi\dbExpress\dbxconnections.ini

И удалила папку dbExpress из старой директории, но в итоге все равно где-то этот старый путь еще используется и именно когда вот таким образом создаю объект класса TSimpleDataSet, так как сейчас обратно скопила в старую директорию и все заработало.
Возможно потому-что у меня Delphi 2009  и первый апдейт, сейчас покапаю, может найду где старый адрес прописан или попробую второй апдейт сделать.


PM MAIL MSN   Вверх
pseud
Дата 5.3.2009, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 16
Всего: 40



что за каша?
Код

          with TSimpleDataSet.Create(Self) do
          begin
            Name := 'SimpleDataSet_'+(Param_SimpleDataSet.FieldByName('parambox_field').AsString);
            Connection := MainForm.SQLConnection1;
            DataSet.CommandType := ctTable;
            DataSet.CommandText := Param_SimpleDataSet.FieldByName('parambox_field').AsString;
            DataSet.Active := true;
            Active := true;
          end;

DataSet - это кто? 

может так?
Код

          with TSimpleDataSet.Create(Self) do
          begin
            Name := 'SimpleDataSet_'+(Param_SimpleDataSet.FieldByName('parambox_field').AsString);
            Connection := MainForm.SQLConnection1;
            CommandType := ctTable;
            CommandText := Param_SimpleDataSet.FieldByName('parambox_field').AsString;
            Active := true;
          end;



--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
Akella
Дата 22.3.2009, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Цитата(Dolphinchik @  21.2.2009,  08:59 Найти цитируемый пост)
            Active := true; //здесь возникает ошибка!

смотри дебаггером, что происходит в момент открытия
PM MAIL   Вверх
Данкинг
Дата 22.3.2009, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Не знаю, что за TSimpleDataSet такой, но его обязательно нужно создавать именно в рантайме? smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Dolphinchik
Дата 22.3.2009, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 24.7.2006
Где: Филлипины

Репутация: нет
Всего: нет



Цитата(pseud @ 5.3.2009,  15:12)
что за каша?
Код

          with TSimpleDataSet.Create(Self) do
          begin
            Name := 'SimpleDataSet_'+(Param_SimpleDataSet.FieldByName('parambox_field').AsString);
            Connection := MainForm.SQLConnection1;
            DataSet.CommandType := ctTable;
            DataSet.CommandText := Param_SimpleDataSet.FieldByName('parambox_field').AsString;
            DataSet.Active := true;
            Active := true;
          end;

DataSet - это кто? 

может так?
Код

          with TSimpleDataSet.Create(Self) do
          begin
            Name := 'SimpleDataSet_'+(Param_SimpleDataSet.FieldByName('parambox_field').AsString);
            Connection := MainForm.SQLConnection1;
            CommandType := ctTable;
            CommandText := Param_SimpleDataSet.FieldByName('parambox_field').AsString;
            Active := true;
          end;


Спасибо за ваши комменты, по теме я разобралась, а вот по поводу того что нужно писать так как вы говорите...я на самом деле искала, но подтверждения тому, что нужно именно так писать не нашла. Погуглила, нашла несколько примеров, все то же самое как у меня. У меня Delphi 2009, мб в этом различие или я чего недопонимаю.

Данкинг, у меня есть страничка поиска, а на ней 4 кнопочки поиска, и при нажатии их вызывается одна и та же процедура создания интерфейса поиска, но естественно поиск может осуществляться по разным параметрам, да и парамметры могут быть разного типа . В базе есть табличка, в которой прописаны наименования поисков с ПАРАММЕТРАМИ. 
Получается при нажатии на кнопку происходит обращение к этой табличке и из кнопки (из свойства кнопки, где прописано наименование поиска) передается наименование поиска. Затем забираются парамметры поиска по Наименованию поиска в "Главный DataSet" - Из этого датасета передаются в процедуру создания интерфейса парамметры. При этом парамметрами выступают наименования таблиц, которые будут выступать ListSource'ами для TDBLookUpComboBox. 

То есть в процедуру создания интерфейса поступают некие данные и интерфейс создается поэтапно: сначала TSimpleDataSet, потом TDataSource, а потом TDBLookUpComboBox (в нем ListSource'у передаю DataSource). Помимо этого Там еще много замутов, вообщем по этому таким вот образом делаю TSimpleDataSet .Create в процедуре формирования интерфейса формы поиска, о как! smile   smile  smile 



Это сообщение отредактировал(а) Dolphinchik - 22.3.2009, 23:13
PM MAIL MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0540 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.