当前位置:主页>仓库管理软件> 列表

请问如何实现变量数组的问题...详细请入..急!!! 找客户管理软件下载

仓库管理软件版1楼: 我已经知道如何获取一个ComboBox的Items数了,想请问的是如何通过各个Items的值获取其在数据库中对应的另一字段的值(如通过ComboBox1中的Items[为产品号1、2、3、4、5]获取到这些产品号分别对应的单价,不希望由事件触发。。。),可能这么表述会不太清楚,我还是举例来说下好,虽然罗嗦点。。。好多天了,着实郁闷,还望大虾帮助啊!

ComboBox1(客户编号) ComboBox2(购买的商品号) Array变量数组
1
2
3



n
当选择ComboBox1的某客户后,即触发ComboBox1的OnChange事件后可获取到其对应的购买的商品号到ComboBox2中
ComboBox1(客户编号) ComboBox2(购买的商品号) Array变量数组
1 001
002
003



nnn
到了这步就不知道了。。。想用一个数组如MyArray[i],i由ComboBox2的Items的count决定动态创建。。。然后不用选择商品号就能获得001对应的单价15.00元,002对应的单价10.00元……nnn对应的单价X元。
换句话说就是只要选择客户编号就要自动获得该客户购买的所有商品号和商品号对应的那种商品的单价,并且商品号与单价是一一对应的,单价是以变量承接的。请问哪位大虾知道,并愿意帮助在下啊?

2楼: setlength(MyArray,长度) 如客户管理软件下载

3楼: 直接在ie写的,不知道有没有语法的错误,反正意思差不多

定义商品结构
type
PCommodity = ^TCommodity;
TCommodity = packed record
Price: Double;
end;
从数据库取值填充combbox
var
Commodity: PCommodity;
qry.sql.add(select 商品号,价格 from xx);
qry.open;
while not qry.eof do
begin
New(Commodity);
Commodity^.Price := qry[''价格''];
ComboBox2.items.addobject(qry[''商品号''], TObject(Commodity));
qry.next;
end;


取商品价格,在combobox2的onchange事件中取
var
Price: Double;
Price := PCommodity(combbox2.items.objects[combbox2.itemindex])^.Price;


在窗体destroy时释放指针
var
I: Integer;
for I := 0 to Combbox2.items.count - 1 do
begin
Dispose(Pointer(Combbox2_Add.items.objects[I]));
Combbox2_Add.items.objects[I] := nil;
end;

4楼: type
PCommodity = ^TCommodity;
TCommodity = packed record
Price: Double;
end;
这个结构可以扩充,也就是你可以将更多的信息放在combbox里
甚至于你可以定义一个类,再在类里定义TList,可做到模似多维数组的效果
这个自己去体会一下

5楼: 不知道你表的结构是怎么样的,从业务分析应该有两个过程
1、客户编号-->>商品列表
2、商品列表-->>对应的价格列表
可以把查询结果放ComboBox2.items中,如52free所写,或者另外建一动态数组保存。

6楼: 你这么做有点太麻烦了吧
你可以把‘购买的商品号’,‘价格表’都提取到数据控件中,如adoquery。然后使用过滤的方法来达到你的要求。
步骤如下:
点选combobox1时,过滤adoquery1,adoquery1.filter:='' 购买者编号 = ''''''+购买者编号+'''''''',adoqeury1.filtered:=true;
然后初始化Combobox2;
点选点选combobox2时,过滤adoquery2,adoquery2.filter:='' 购买者编号 = ''''''+购买者编号+'''''' and 商品号=''''''+商品号+'''''''',adoqeury2.filtered:=true;

仓库管理软件版7楼: 大虾们都没看清楚啊,我不要去选择ComboBox2啊,只要选择ComboBox的客户号就得到该客户所有的购买商品,同时还要得到这些商品对应的单价啊(这个单价要由变量数组来承接呀)!我是这么做的获取到ComboBox2商品编号的
var
myarray:array of String;
i:integer;
begin
i:=ComboBox1.Items.Count;
setlength(myarray,i);
for i:=0 to high(myarray) do
begin
//什么也不做,那这里干什么用啊?
end;
for i:=0 to ComboBox1.Items.Count-1 do
begin
myarray[i]:=ComboBox1.Items[i];
ShowMessage(myarray[i]); //可以正常显示循环获得的变量值了,可是不知道如何
//对应获取单价,直接拿取单价的函数放这?
end;
end;

8楼: 帮顶!

╭=========================================╮

80G海量源代码,控件,书籍全免费狂下不停!

http://www.source520.com

╰=========================================╯

9楼: 定义一个记录类型的类,再定义一个类的动态数组
type
Tsp = packed record
dj: Double;
sl: Integer;
end;

var
anarray :array of Tsp;

这样每一个数组元素都会有两个字段,就象一个表一样了

10楼: 帮顶!

╭=========================================╮

80G海量源代码,控件,书籍全免费狂下不停!

http://www.source520.com

个人网站站长开发推广同盟,让所有人知道你的世界!

http://www.source520.com/search/search.asp

╰=========================================╯

11楼: 算了,自己搞定了……不过还是谢谢热心回答问题的朋友。