2个Form,Form1(含DBGrid1),Form2(含DBGrid2),两个DBGrid是一样的,Form1中,建立了Connection,ADO,并且和DBGrid1绑定,可以正常显示数据,Form2中,不关联数据库,想同样显示DBGrid2,和Form1中的DBGrid1达到一样的效果。
就是DBGrid,不想使用StringGrid
在Form2中,包含了Form1的头文件,并且得到了Form1的ADO
Form1->ADO1->SQL->Clear();
Form1->ADO1->SQL->Add("select * form tb_.. where ..");
Form1->ADO1->Open();
在给DBGrid2赋值的时候,我想通过两种方式来实现,可以都有问题(Form2是new出来的,Form1是appliction的)
1.直接给DBGrid2赋一个datasource,我的想法
this->DBGrid2->DataSource = Form1->ADO1->DataSource;
这种做法的问题是,Form1->ADO1->DataSource为空,ADO1是有值的
2.逐行给DBGrid2赋值
int recordcount = Form1->ADO1->RecordCount; //记录的总条数
for(int i=0;i<RecordCount;++i)
{
this->DBGrid2->Fields[0]->Text = Form1->ADO1->FieldByName("Field1")->AsString;
this->DBGrid2->Fields[1]->Text = Form1->ADO1->FieldByName("Field2")->AsString;
......
}
问题是:this->DBGrid2->Fields[0]->Text 出错
错误提示:Access violation at address ××× in module ,这个是指针访问越界?没初始化?
Form2是我new出来的,错误的原因到底是在哪里呢?希望高手指点
两种做法应该都有解决方案吧...