MATLAB-利用下拉框进行搜索查询,并把搜索后的结果打印到edit控件上
以内部材料为例
先是在下拉框里面设置参数 然后在“查询”按钮里面写代码
代码:
list2=get(handles.popupmenu2,'String');
list3=get(handles.popupmenu3,'String');
list4=get(handles.popupmenu4,'String');
list5=get(handles.popupmenu5,'String');
val1=get(handles.popupmenu1,'String');%颗粒类型
val2=get(handles.popupmenu2,'Value');%颗粒类型
val3=get(handles.popupmenu3,'Value');%冲击角度
val4=get(handles.popupmenu4,'Value');%温度
val5=get(handles.popupmenu5,'Value');%压力
A1=val1;%颗粒类型
A2=num2str(list2{val2});%颗粒类型
A3=num2str(list3{val3});%冲击角度
A4=num2str(list4{val4});%温度
A5=num2str(list5{val5});%压力
sqldata=load('data.mat');
sqldata=struct2cell(sqldata);
sqldata=sqldata{1,1};
B=sqldata(1:25,:);
flag=0;
num=[];
for i=1:25
if strcmp(A1,B{i,4}) && strcmp(A2,B{i,5}) && strcmp(A3,B{i,6}) && strcmp(A4,B{i,7}) && strcmp(A5,B{i,8})
num=[num;i];
flag=1;
end
end
if length(num)==1
set(handles.edit8,'String',B{num(1),1});%组别
set(handles.edit9,'String',B{num(1),10});%磨损量
set(handles.edit10,'String',B{num(1),11});%磨损率
set(handles.edit11,'String',B{num(1),9});%冲击时间
end
if length(num)>1
m=length(num);
c=num2str(B{num(1),1});%组别
d=B{num(1),10};%磨损量
e=B{num(1),11};%磨损率
f=B{num(1),9};%冲击时间
for j=2:m
c=strcat(c,'/');
c=strcat(c,num2str(B{num(j),1}));
d=strcat(d,'/');
d=strcat(d,B{num(j),10});
e=strcat(e,'/');
e=strcat(e,B{num(j),11});
f=strcat(f,'/');
f=strcat(f,B{num(j),9});
end
set(handles.edit8,'String',c);%组别
set(handles.edit9,'String',d);%磨损量
set(handles.edit10,'String',e);%磨损率
set(handles.edit11,'String',f);%冲击时间
end
if flag==0
errordlg('没有查找到该数据','错误');%内容,标题
end
查询结果:
1.单行数据(先拿PAT展示)
2.多行数据
3.没有数据
解析
因为数据有多行 并且需要按照特定的格式进行输出 因为定义了一个变量num来统计匹配的个数
get(handles.popupmenu2,'String')
上面这个是用来获取popupmenu里面所有的参数 返回string类型
get(handles.popupmenu2,'Value')
这个是获取popupmenu里面选择的值的索引 返回1、2、3、4、5...。这种
根据索引就可以找出对应的下拉框显示的值
来进行匹配判断
个数为1直接打印 个数超过1 按照不同的格式打印
转载请注明出处,欢迎讨论和交流!