大家帮小弟我看看这几个小问题
大家帮我看看这几个问题
各位高手,由于本人是超级菜鸟,现在遇到几个初级的最基本的问题无法解决,请各位高手指教一下:
问题1:我在TComboBox组件里自动添加“1天、2天……10天”,但我的数据表中这个字段的类型是“数值”型。所以我想在保存数据到数据表中时,将“1天、2天……10天”这些值只保存为1、2……10(即:去除“天”字)。现在我的代码(“新建”按钮的OnClick事件)如下,可只要一点击“新建”按钮,就会出现错误信息: '''' is not a valid integer value。请问为什么?我应该怎么修改?
问题代码:
IF fmHRcboxDeadline5.ItemIndex < 10 then
begin
DMMain.dsHiddenMaster.DataSet.FieldByName('整改期限').AsInteger := StrToInt(Copy(fmHRcboxDeadline5.Text,1,Pos('天',text)-1));//我曾将此行中的“-1去掉,其余不变仍然出现这个错误”
end
ELSE
begin
DMMain.dsHiddenMaster.DataSet.FieldByName('整改期限').AsInteger := StrToInt(Copy(fmHRcboxDeadline5.Text,1,Pos('天',text)-2));
end;
问题2:我做了一个主表,一个从表。但在我点击“新建”按钮进行相关数据的选取、添加后,再点击“保存”按钮时,出现错误信息:DMADOtbHiddenDetails: DataSet not in edit or insert mode(DMADOtbHiddenDetailsTADOTable名称),但我的代码中已经有了“DMMain.dsHiddenDetails.DataSet.Append”这个语句了啊,为什么从表还是不在新建或编辑状态?(DMMain.dsHiddenDetails.DataSet就是DMADOtbHiddenDetails。即便在代码中将DMMain.dsHiddenDetails.DataSet改成DMADOtbHiddenDetails,也仍然会出现这个错误)。
问题2代码如下:
procedure TfmHiddenRecord.fmHRBtnNew26Click(Sender: TObject);
Var
HiddenLines, MeasureLines: Integer;
begin
DMMain.dsHiddenMaster.DataSet.Append;
fmHRedCode0.Text := IntToStr(DMMain.dsHiddenMaster.DataSet.RecordCount + 1);
DMMain.dsHiddenMaster.DataSet.FieldByName('隐患编号').AsInteger := DMMain.dsHiddenMaster.DataSet.RecordCount + 1;
DMMain.dsHiddenMaster.DataSet.FieldByName('检查日期').AsDateTime := fmHRdtExamine1.Date;
DMMain.dsHiddenMaster.DataSet.FieldByName('被检单位').AsString := fmHRcboxUnit2.Text;
DMMain.dsHiddenMaster.DataSet.FieldByName('负责人').AsString := fmHRcboxReceived3.Text;
DMMain.dsHiddenMaster.DataSet.FieldByName('检查人').AsString := fmHRcboxRummager4.Text;
IF fmHRcboxDeadline5.ItemIndex < 10 then
begin
DMMain.dsHiddenMaster.DataSet.FieldByName('整改期限').AsInteger := StrToInt(Copy(fmHRcboxDeadline5.Text,1,Pos('天',text)-1));
end
ELSE
begin
DMMain.dsHiddenMaster.DataSet.FieldByName('整改期限').AsInteger := StrToInt(Copy(fmHRcboxDeadline5.Text,1,Pos('天',text)-2));
end;
DMMain.dsHiddenMaster.DataSet.FieldByName('整改期限').AsInteger := StrToInt(LeftStr(fmHRcboxDeadline5.Text,1));
DMMain.dsHiddenMaster.DataSet.FieldByName('检查单位意见').AsString := fmHRedIdea6.Text;
For HiddenLines := 0 To fmHRreDetails7.Lines.Count - 1 Do
begin
DMMain.dsHiddenMaster.DataSet.Append;
DMMain.dsHiddenDetails.DataSet.FieldByName('父编号').AsInteger := DMMain.dsHiddenMaster.DataSet.FieldByName('隐患编号').AsInteger;
DMMain.dsHiddenDetails.DataSet.FieldByName('编号').AsInteger := DMMain.dsHiddenMaster.DataSet.FieldByName('隐患编号').AsInteger + StrToInt('-1');
DMMain.dsHiddenDetails.DataSet.FieldByName('内容类型').AsInteger := 1;
DMMain.dsHiddenDetails.DataSet.FieldByName('文本内容').AsString := fmHRreDetails7.Lines.Strings[HiddenLines];
end;
For MeasureLines := 0 To fmHRreMeasure8.Lines.Count - 1 Do
begin
DMMain.dsHiddenMaster.DataSet.Append;
DMMain.dsHiddenDetails.DataSet.FieldByName('内容类型').AsInteger := 2;
DMMain.dsHiddenDetails.DataSet.FieldByName('文本内容').AsString := fmHRreMeasure8.Lines.Strings[MeasureLines];
end;
end;
------解决方案--------------------
1. 直接用StrToInt(Copy(fmHRcboxDeadline5.Text,1,Pos('天',fmHRcboxDeadline5)-1))
2. 出问题的代码,注意红色部分
DMMain.dsHiddenMaster.DataSet.Append;
DMMain.dsHiddenDetails.DataSet.FieldByName('父编号').AsInteger := DMMain.dsHiddenMaster.DataSet.FieldByName('隐患编号').AsInteger;
------解决方案--------------------
各位高手,由于本人是超级菜鸟,现在遇到几个初级的最基本的问题无法解决,请各位高手指教一下:
问题1:我在TComboBox组件里自动添加“1天、2天……10天”,但我的数据表中这个字段的类型是“数值”型。所以我想在保存数据到数据表中时,将“1天、2天……10天”这些值只保存为1、2……10(即:去除“天”字)。现在我的代码(“新建”按钮的OnClick事件)如下,可只要一点击“新建”按钮,就会出现错误信息: '''' is not a valid integer value。请问为什么?我应该怎么修改?
问题代码:
IF fmHRcboxDeadline5.ItemIndex < 10 then
begin
DMMain.dsHiddenMaster.DataSet.FieldByName('整改期限').AsInteger := StrToInt(Copy(fmHRcboxDeadline5.Text,1,Pos('天',text)-1));//我曾将此行中的“-1去掉,其余不变仍然出现这个错误”
end
ELSE
begin
DMMain.dsHiddenMaster.DataSet.FieldByName('整改期限').AsInteger := StrToInt(Copy(fmHRcboxDeadline5.Text,1,Pos('天',text)-2));
end;
问题2:我做了一个主表,一个从表。但在我点击“新建”按钮进行相关数据的选取、添加后,再点击“保存”按钮时,出现错误信息:DMADOtbHiddenDetails: DataSet not in edit or insert mode(DMADOtbHiddenDetailsTADOTable名称),但我的代码中已经有了“DMMain.dsHiddenDetails.DataSet.Append”这个语句了啊,为什么从表还是不在新建或编辑状态?(DMMain.dsHiddenDetails.DataSet就是DMADOtbHiddenDetails。即便在代码中将DMMain.dsHiddenDetails.DataSet改成DMADOtbHiddenDetails,也仍然会出现这个错误)。
问题2代码如下:
procedure TfmHiddenRecord.fmHRBtnNew26Click(Sender: TObject);
Var
HiddenLines, MeasureLines: Integer;
begin
DMMain.dsHiddenMaster.DataSet.Append;
fmHRedCode0.Text := IntToStr(DMMain.dsHiddenMaster.DataSet.RecordCount + 1);
DMMain.dsHiddenMaster.DataSet.FieldByName('隐患编号').AsInteger := DMMain.dsHiddenMaster.DataSet.RecordCount + 1;
DMMain.dsHiddenMaster.DataSet.FieldByName('检查日期').AsDateTime := fmHRdtExamine1.Date;
DMMain.dsHiddenMaster.DataSet.FieldByName('被检单位').AsString := fmHRcboxUnit2.Text;
DMMain.dsHiddenMaster.DataSet.FieldByName('负责人').AsString := fmHRcboxReceived3.Text;
DMMain.dsHiddenMaster.DataSet.FieldByName('检查人').AsString := fmHRcboxRummager4.Text;
IF fmHRcboxDeadline5.ItemIndex < 10 then
begin
DMMain.dsHiddenMaster.DataSet.FieldByName('整改期限').AsInteger := StrToInt(Copy(fmHRcboxDeadline5.Text,1,Pos('天',text)-1));
end
ELSE
begin
DMMain.dsHiddenMaster.DataSet.FieldByName('整改期限').AsInteger := StrToInt(Copy(fmHRcboxDeadline5.Text,1,Pos('天',text)-2));
end;
DMMain.dsHiddenMaster.DataSet.FieldByName('整改期限').AsInteger := StrToInt(LeftStr(fmHRcboxDeadline5.Text,1));
DMMain.dsHiddenMaster.DataSet.FieldByName('检查单位意见').AsString := fmHRedIdea6.Text;
For HiddenLines := 0 To fmHRreDetails7.Lines.Count - 1 Do
begin
DMMain.dsHiddenMaster.DataSet.Append;
DMMain.dsHiddenDetails.DataSet.FieldByName('父编号').AsInteger := DMMain.dsHiddenMaster.DataSet.FieldByName('隐患编号').AsInteger;
DMMain.dsHiddenDetails.DataSet.FieldByName('编号').AsInteger := DMMain.dsHiddenMaster.DataSet.FieldByName('隐患编号').AsInteger + StrToInt('-1');
DMMain.dsHiddenDetails.DataSet.FieldByName('内容类型').AsInteger := 1;
DMMain.dsHiddenDetails.DataSet.FieldByName('文本内容').AsString := fmHRreDetails7.Lines.Strings[HiddenLines];
end;
For MeasureLines := 0 To fmHRreMeasure8.Lines.Count - 1 Do
begin
DMMain.dsHiddenMaster.DataSet.Append;
DMMain.dsHiddenDetails.DataSet.FieldByName('内容类型').AsInteger := 2;
DMMain.dsHiddenDetails.DataSet.FieldByName('文本内容').AsString := fmHRreMeasure8.Lines.Strings[MeasureLines];
end;
end;
------解决方案--------------------
1. 直接用StrToInt(Copy(fmHRcboxDeadline5.Text,1,Pos('天',fmHRcboxDeadline5)-1))
2. 出问题的代码,注意红色部分
DMMain.dsHiddenMaster.DataSet.Append;
DMMain.dsHiddenDetails.DataSet.FieldByName('父编号').AsInteger := DMMain.dsHiddenMaster.DataSet.FieldByName('隐患编号').AsInteger;
------解决方案--------------------