InsertMeterIDQuery.Close;
在这后面你要加入
InsertMeterIDQuery.SQL.ADD(SQL语句);----->这里不能少!
InsertMeterIDQuery.ParamByName('StartMeterID').AsString:=strStartMeterID;
InsertMeterIDQuery.ParamByName('EndMeterID').AsString:=strEndMeterID;
在这后面你要加入
InsertMeterIDQuery.SQL.ADD(SQL语句);----->这里不能少!
InsertMeterIDQuery.ParamByName('StartMeterID').AsString:=strStartMeterID;
InsertMeterIDQuery.ParamByName('EndMeterID').AsString:=strEndMeterID;
解决方案 »
- 谁用过D2007?怎么没有ADOQUERY,到底支持不支持SQL2000?
- 文本操作
- 深圳到南昌的火车票。车次为K106,转让。
- delphi中sql語句更新access問題
- 请教高手!!!能否这样通过动态创建视图,然后根据视图中的字段创建报表???
- 在 StatusBar 控件的panel中如何显示一个图标?
- 大们救命阿!!! 为什么会有Cannot focus a disabled or invisible window 的错误? 500分求解!!!!! 十万火急急啊!!!
- 关于针式打印机和激光打印机的问题
- 求助:Tstoredproc控件StoredProcName如果以';1'结尾,运行时报‘找不到存储过程’错误。
- 一个小问题。
- 怎样用Delphi的NMUDP1.sendstream方法实现对其他程序的固定格式的参数传递?小弟急需解决,谢谢!!
- 我做过的,但是忘了,请大虾们指教(很简单,蹭分题)。
Field Name Type Size Key Required filed
ItemID + * yes
MeterID A 20
MonthNum S
RotateNum N
YearNum S
RecordDate D
WaterNum S
在这后面你要加入
InsertMeterIDQuery.SQL.clear;);----->这里不能少!
InsertMeterIDQuery.SQL.ADD(SQL语句);----->这里不能少!
InsertMeterIDQuery.ParamByName('StartMeterID').AsString:=strStartMeterID;
InsertMeterIDQuery.ParamByName('EndMeterID').AsString:=strEndMeterID;
InsertMeterIDQuery.Params.Clear();
InsertMeterIDQuery.Params.CreateParam(ftString,'StartMeterID',ptInput);
InsertMeterIDQuery.Params.CreateParam(ftString,'EndMeterID',ptInput);
InsertMeterIDQuery.ParamByName('StartMeterID').AsString:=strStartMeterID;
InsertMeterIDQuery.ParamByName('EndMeterID').AsString:=strEndMeterID;
if InsertMeterIDQuery.prepared=false then
InsertMeterIDQuery.Prepare;
InsertMeterIDQuery.ExecSQL;
InsertMeterIDQuery.close;
还是不行啊。
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Mask, Grids, DBGrids, ComCtrls;type
TReadMeterForm = class(TForm)
GroupBox1: TGroupBox;
Label1: TLabel;
txtStartMeterID: TEdit;
Label2: TLabel;
txtEndMeterID: TEdit;
GroupBox2: TGroupBox;
Label3: TLabel;
txtYearNum: TMaskEdit;
txtMonthNum: TComboBox;
Label4: TLabel;
Button1: TButton;
Button2: TButton;
DBGrid1: TDBGrid;
txtRecordDate: TDateTimePicker;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
ReadMeterForm: TReadMeterForm;implementation
uses
DataModule,DB;{$R *.DFM}procedure TReadMeterForm.Button1Click(Sender: TObject);
var
strStartMeterID,strEndMeterID:string;
SaveChoice:word;
// intYear,intMonth,intDay:word;
begin
if Button1.caption='开始录入' then //edit mode
begin
//check input
if txtYearNum.text='' then //invalid input
begin
showmessage('请输入年份!');
txtYearNum.SetFocus();
exit;
end;
if txtMonthNum.text='' then
begin
showmessage('请输入月份!');
txtMonthNum.SetFocus();
exit;
end;
(* if pos(' ',txtRecordDate.text)<>0 then
begin
showmessage('请输入日期!');
txtRecordDate.SetFocus();
exit;
end;
*) //form start and end meterid
if txtStartMeterID.text='' then
begin
//get min meterid in table instead
with WaterDM.MinMeterIDQuery do
begin
if prepared=false then
prepare;
open;
strStartMeterID:=FieldByName('MinMeterID').AsString;
close;
end;
end;
if txtEndMeterID.text='' then
begin
//get min meterid in table instead
with WaterDM.MaxMeterIDQuery do
begin
if prepared=false then
prepare;
open;
strEndMeterID:=FieldByName('MaxMeterID').AsString;
close;
end;
end; //empty temp table
with WaterDM.tempWaterRecordTable do
begin
if active=true then
close;
EmptyTable;
end; //generate new data
with WaterDM do
begin
//generate meterid
InsertMeterIDQuery.Close;
InsertMeterIDQuery.ParamByName('StartMeterID').AsString:=strStartMeterID;
InsertMeterIDQuery.ParamByName('EndMeterID').AsString:=strEndMeterID;
showmessage(InsertMeterIDQuery.SQL.Strings[0]);
if InsertMeterIDQuery.prepared=false then
InsertMeterIDQuery.Prepare;
InsertMeterIDQuery.ExecSQL;
InsertMeterIDQuery.close; //generate other data
UpdatetempWaterRecordQuery.close;
UpdatetempWaterRecordQuery.ParamByName('MonthNum').AsInteger:=StrToInt(txtMonthNum.text);
UpdatetempWaterRecordQuery.ParamByName('YearNum').AsInteger:=StrToInt(txtYearNum.text);
UpdatetempWaterRecordQuery.ParamByName('RecordDate').AsDate:=txtRecordDate.date;
if UpdatetempWaterRecordQuery.prepared=false then
UpdatetempWaterRecordQuery.prepare;
UpdatetempWaterRecordQuery.ExecSQL;
UpdatetempWaterRecordQuery.close; //active input grid
with WaterDM do
begin
if tempWaterRecordQuery.prepared=false then
tempWaterRecordQuery.prepare;
tempWaterRecordQuery.open;
end;
end; //change button caption
button1.caption:='结束录入';
end
else //save mode
begin
//confirm save input
SaveChoice:=messagedlg('是否保存修改?',mtConfirmation,[mbYes,mbNo],0);
//save or restore
if SaveChoice=mrYes then //save
begin
with WaterDM do
begin
//apply updates in query
tempWaterRecordQuery.ApplyUpdates; MigrateQuery.close;
if MigrateQuery.prepared=false then
MigrateQuery.prepare;
MigrateQuery.ExecSQL;
MigrateQuery.close;
end;
end
else //no save
begin
end;
//empty temp table
WaterDM.tempWaterRecordTable.EmptyTable();
//change button caption
button1.caption:='开始录入'; //close related tables
if WaterDM.tempWaterRecordQuery.active=true then
WaterDM.tempWaterRecordQuery.close;
end;
end;procedure TReadMeterForm.Button2Click(Sender: TObject);
begin
close;
end;end.
我试过了,还是不行。问题根本不出在这里,关键是为什么第二次执行时会出错呢?
UpdatetempWaterRecordQuery.close;
UpdatetempWaterRecordQuery.ParamByName('MonthNum').AsInteger:=StrToInt(txtMonthNum.text);
UpdatetempWaterRecordQuery.ParamByName('YearNum').AsInteger:=StrToInt(txtYearNum.text);
UpdatetempWaterRecordQuery.ParamByName('RecordDate').AsDate:=txtRecordDate.date;
if UpdatetempWaterRecordQuery.prepared=false then
UpdatetempWaterRecordQuery.prepare;
UpdatetempWaterRecordQuery.ExecSQL;
UpdatetempWaterRecordQuery.close;