你好,看到你的回答知道你是个高手,有个对我来说的难题,希望你能解答一下,万分感谢。
有两个表
create table product_category(
product_category_id int identity not null,
product_category_name varchar(20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
py_code varchar(10) COLLATE Chinese_PRC_CI_AS NULL
)
create table product_category2(
product_category2_id int identity not null,
product_category_id int null,
product_category2_name varchar(20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
py_code varchar(10) COLLATE Chinese_PRC_CI_AS NULL
)
dbgrid1通过一个TADOTABLE与product_category2相连 dbgrid1只显示三列
columns[0]显示product_category2_name字段 columns[1]显示py_code字段 columns[2]显示product_category_id字段
在columns[2]这个字段里面我用了下面的方法
with datamodule.DataModuleF.ADOQuery1 do
begin
close;
sql.Clear;
sql.Add('select product_category_name from product_category');
open;
while not eof do
begin
dbgrid1.Columns[2].PickList.add(fieldbyname('product_category_name').AsString);
next;
end;
end;
就是在columns[2]字段里面显示产品大分类的名称来给用户选择,但是这里出现了类型不匹配问题columns[2]显示product_category_id这里是int类型,但是dbgrid1.Columns[2].PickList.add(fieldbyname('product_category_name').AsString);里的'product_category_name是varchar类型的,出现了错误。要怎么样才能得到改正。
然后要怎么样把'product_category_name映射为product_category_id进行保存。
有两个表
create table product_category(
product_category_id int identity not null,
product_category_name varchar(20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
py_code varchar(10) COLLATE Chinese_PRC_CI_AS NULL
)
create table product_category2(
product_category2_id int identity not null,
product_category_id int null,
product_category2_name varchar(20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
py_code varchar(10) COLLATE Chinese_PRC_CI_AS NULL
)
dbgrid1通过一个TADOTABLE与product_category2相连 dbgrid1只显示三列
columns[0]显示product_category2_name字段 columns[1]显示py_code字段 columns[2]显示product_category_id字段
在columns[2]这个字段里面我用了下面的方法
with datamodule.DataModuleF.ADOQuery1 do
begin
close;
sql.Clear;
sql.Add('select product_category_name from product_category');
open;
while not eof do
begin
dbgrid1.Columns[2].PickList.add(fieldbyname('product_category_name').AsString);
next;
end;
end;
就是在columns[2]字段里面显示产品大分类的名称来给用户选择,但是这里出现了类型不匹配问题columns[2]显示product_category_id这里是int类型,但是dbgrid1.Columns[2].PickList.add(fieldbyname('product_category_name').AsString);里的'product_category_name是varchar类型的,出现了错误。要怎么样才能得到改正。
然后要怎么样把'product_category_name映射为product_category_id进行保存。
另外,象这类你需要动态指定DBGRID里面显示内容的,还是先查看以下DBGRID的FIELDS内容,最好全清空.
偶也赞同DBGRID
只用来显示数据
编辑还是用专门的组件
如果你一点要用 DBGRIFEH
可以满足你
你这样自己写事件改的话
如果数据量很大 效率也是问题
with datamodule.DataModuleF.ADOQuery1 do
begin
close;
sql.Clear;
sql.Add('create table temp(
product_category_name varchar(20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
product_category2_name varchar(20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
py_code varchar(10) COLLATE Chinese_PRC_CI_AS NULL)');
open;
end; 然后将你要选择的数据写如这个临时数据库里面. 最后sql.Add('dorp table temp');