我在运行是,弹出一个惊叹号错误对话框:project fc.exe raised class EVariantError with
message 'InValid variant operation',Process stopped.Used step or Run continue
我继续按了Run,在弹出一个惊叹号错误对话框:project fc.exe raised class EVariantError with
message 'InValid variant type conversion',Process stopped.Used step or Run continue
请问这是什么原因
message 'InValid variant operation',Process stopped.Used step or Run continue
我继续按了Run,在弹出一个惊叹号错误对话框:project fc.exe raised class EVariantError with
message 'InValid variant type conversion',Process stopped.Used step or Run continue
请问这是什么原因
解决方案 »
- application.messagebox 弹出后,为什么要连续2次确认才能执行后面的语句?
- 如何让提示消息出现在屏幕的最前面?
- 請教取字串的問題
- 关于MSDE 的两个问题 1、安装我的系统时如何自动安装MSDE???2、如何自动设置启动操作系统时启动MSSQLSERVER服务???
- 怎样把jpg转换位BMP,在线急等
- 这两天花钱如流水,只能问这一个问题了!打印操作中的dpi,canvas计算、添加自定义纸。
- 怎样获取四位随机码及怎样使小数点后保留三位?
- 怎样用循环提出数据库中的前5条记录并将其中具体字段的值付给text1,text2,tex3...
- 新手请教
- 想用QuickReport实现一个万能报表,希望各位大虾给点建议
- PageControl控件的问题 来者有分!谢谢!!
- 如何在delphi中加超链接?
记住在使用变量的时候先判断变量是否为空,记住程序多多使用Assigned/IsEmpty/=NIL等
对于数据库
先检查它是否isnull
或者用转换
asinteger asstring
这样会好一些
而不要直接用value
或fieldvalues
var
Frm_flow: TFrm_flow;
flowstr :array[0..11] of string;
//flowid :array[0..11] of string;
flowid: Variant;
// sh_dx :Variant;
//workname:Variant;
implementationuses dmfc;{$R *.dfm}procedure TFrm_flow.FormCreate(Sender: TObject);beginfcdm.ADOQuery1.Close;
fcdm.ADOQuery1.SQL.Clear;
fcdm.ADOQuery1.SQL.Add('select work_name.work_name from work_name');
fcdm.ADOQuery1.Open;
while not fcdm.ADOQuery1.Recordset.EOF do
begin
listbox_flow.Items.Add(fcdm.ADOQuery1.Recordset.Fields.Item[0].value);
fcdm.ADOQuery1.Recordset.MoveNext;
end;
listbox_flow.ItemIndex:=0;
end;procedure TFrm_flow.ListBox_flowClick(Sender: TObject);beginfcdm.ADOQry_flow.Close;
fcdm.ADOQry_flow.Parameters.ParamByName('name').Value:=ListBox_flow.Items[ListBox_flow.ItemIndex];
fcdm.ADOQry_flow.Open;
fcdm.ADOQry_flow.Active:=true;end;procedure TFrm_flow.Btn_modifyClick(Sender: TObject);
begin
dbgrideh1.Enabled:=true;end;procedure TFrm_flow.Btn_cancelClick(Sender: TObject);begin
frm_flow.Close;
end;procedure TFrm_flow.Btn_saveClick(Sender: TObject);
var
i:integer;str:string;
str_type:string;workname:string;
begin
str_type:='';
flowid:= VarArrayCreate([0, 11], varVariant);dbgrideh1.DataSource.DataSet.First;
for i:=0 to dbgrideh1.DataSource.DataSet.RecordCount-1 do
begin
str:=fcdm.ADOQry_flowFLOW_NAME.Value;
if str='收件登记' then
flowid[i]:='A';
if str='复审' then
flowid[i]:='B';
if str='审批' then
flowid[i]:='C';
if str='缮证' then
flowid[i]:='D';
if str='收费' then
flowid[i]:='E';
if str='发证' then
flowid[i]:='F';
if str='归档' then
flowid[i]:='G';
if str='交易复审' then
flowid[i]:='H';
if str='交易审批' then
flowid[i]:='I';
if str= '产权初审' then
flowid[i]:='J';
if str='生成分户表' then
flowid[i]:='K';
if str= '面积分摊' then
flowid[i]:='L';
if str= '测绘报告打印' then
flowid[i]:='M';
if str='签订合同' then
flowid[i]:='O';
if str= '出单维修' then
flowid[i]:='P';
if str='结束' then
flowid[i]:='W'; str_type:=str_type+flowid[i];
dbgrideh1.DataSource.DataSet.Next;
end;
workname:=ListBox_flow.Items[ListBox_flow.ItemIndex];fcdm.ADOStoredProc_flow.Close;
fcdm.ADOStoredProc_flow.Parameters.ParamByName('flowstr').Value:=str_type;
fcdm.ADOStoredProc_flow.Parameters.ParamByName('flowname').Value:= ListBox_flow.Items[ListBox_flow.ItemIndex];
fcdm.ADOStoredProc_flow.ExecProc;
//if fcdm.ADOStoredProc_flow then
MessageBox(handle,'资料已经修改成功!','电脑提醒您!',MB_OK);
end;procedure TFrm_flow.DBGridEh1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
begin
if gdSelected in State then
begin
dbgrideh1.Canvas.Brush.Color := clNavy;
dbgrideh1.Canvas.Font.Color := clWhite;
end;end;procedure TFrm_flow.Button1Click(Sender: TObject);
begin
fcdm.ADOQry_flow.Edit;
fcdm.ADOQry_flow.Delete;
end;end.
要注意后面的类型要和你数据库中定义的一样。
V := VarArrayCreate([0,9], varInteger);
这个不是varInteger,要换成varString但是还是不行,一样的错误!
怎么当树组用了?