我想用下面的这段查询SQL对应时间和对应LP_TYPE.TYP_DESC里面字段的一组数据的平均值,但是我加上Edit1.Text+'=LP_TYPE.TYP_DESC 后程序不能运行,麻烦看看procedure TFrmMain.SpeedButton2Click(Sender: TObject);
var
StartDate,
EndDate:string;
SQLStr:string;begin
StartDate := DateToStr(DateTimePicker1.Date)+' 00:00:00';
EndDate := DateToStr(DateTimePicker2.Date)+' 23:59:59';
SQLStr :='SELECT CONVERT(VARCHAR(30), VPE.DATUMUHRZEIT,111) AS DATE, LP_TYPE.TYP_DESC as type,AVG(LP_DATA.lichtstrom) AS AVG_LUMEN '+
' FROM LP_DATA INNER JOIN VPE ON LP_DATA.ID_VPE=VPE.ID_VPE '+
' INNER JOIN LP_TYPE ON LP_DATA.ID_TYP=LP_TYPE.ID_TYP '+
' WHERE VPE.DATUMUHRZEIT BETWEEN '+QuotedStr(StartDate)+
' and '+ QuotedStr(EndDate) + ' and '+ QuotedStr(EndDate) +Edit1.Text+'=LP_TYPE.TYP_DESC,'+
' CONVERT(VARCHAR(30),VPE.DATUMUHRZEIT,111)'; ADODataSet1.Active := False;
ADODataSet1.CommandText := SQLStr;
ADODataSet1.Active := True;
end;
var
StartDate,
EndDate:string;
SQLStr:string;begin
StartDate := DateToStr(DateTimePicker1.Date)+' 00:00:00';
EndDate := DateToStr(DateTimePicker2.Date)+' 23:59:59';
SQLStr :='SELECT CONVERT(VARCHAR(30), VPE.DATUMUHRZEIT,111) AS DATE, LP_TYPE.TYP_DESC as type,AVG(LP_DATA.lichtstrom) AS AVG_LUMEN '+
' FROM LP_DATA INNER JOIN VPE ON LP_DATA.ID_VPE=VPE.ID_VPE '+
' INNER JOIN LP_TYPE ON LP_DATA.ID_TYP=LP_TYPE.ID_TYP '+
' WHERE VPE.DATUMUHRZEIT BETWEEN '+QuotedStr(StartDate)+
' and '+ QuotedStr(EndDate) + ' and '+ QuotedStr(EndDate) +Edit1.Text+'=LP_TYPE.TYP_DESC,'+
' CONVERT(VARCHAR(30),VPE.DATUMUHRZEIT,111)'; ADODataSet1.Active := False;
ADODataSet1.CommandText := SQLStr;
ADODataSet1.Active := True;
end;
var
StartDate,
EndDate:string;
SQLStr:string;begin
StartDate := DateToStr(DateTimePicker1.Date)+' 00:00:00';
EndDate := DateToStr(DateTimePicker2.Date)+' 23:59:59';
SQLStr :='SELECT CONVERT(VARCHAR(30), VPE.DATUMUHRZEIT,111) AS DATE, LP_TYPE.TYP_DESC as type,AVG(LP_DATA.lichtstrom) AS AVG_LUMEN '+
' FROM LP_DATA INNER JOIN VPE ON LP_DATA.ID_VPE=VPE.ID_VPE '+
' INNER JOIN LP_TYPE ON LP_DATA.ID_TYP=LP_TYPE.ID_TYP '+
' WHERE VPE.DATUMUHRZEIT BETWEEN '+QuotedStr(StartDate)+
' and '+ QuotedStr(EndDate) + ' and '+ QuotedStr(EndDate) +Edit1.Text+'=LP_TYPE.TYP_DESC,'+
' CONVERT(VARCHAR(30),VPE.DATUMUHRZEIT,111)'; Memo1.Lines.Add(SQLStr);
ADODataSet1.Active := False;
ADODataSet1.CommandText := SQLStr;
ADODataSet1.Active := True;
end;
showmessage(SQLStr);
看下最终的SQL语句哪里错了。
AND A598...
var
StartDate,
EndDate:string;
SQLStr:string;begin
StartDate := DateToStr(DateTimePicker1.Date)+' 00:00:00';
EndDate := DateToStr(DateTimePicker2.Date)+' 23:59:59';
SQLStr :='SELECT CONVERT(VARCHAR(30), VPE.DATUMUHRZEIT,111) AS DATE, LP_TYPE.TYP_DESC as type,AVG(LP_DATA.lichtstrom) AS AVG_LUMEN '+
' FROM LP_DATA INNER JOIN VPE ON LP_DATA.ID_VPE=VPE.ID_VPE '+
' INNER JOIN LP_TYPE ON LP_DATA.ID_TYP=LP_TYPE.ID_TYP '+
' WHERE VPE.DATUMUHRZEIT BETWEEN '+QuotedStr(StartDate)+
' and '+ QuotedStr(EndDate) + ' and '+ QuotedStr(EndDate) +''''+Edit1.Text+'''=LP_TYPE.TYP_DESC' ADODataSet1.Active := False;
ADODataSet1.CommandText := SQLStr;
ADODataSet1.Active := True;
end;
' CONVERT(VARCHAR(30),VPE.DATUMUHRZEIT,111)';
这段代码什么意思啊?不知道你要做什么功能,SQL语法错误。
有message 导出的语句看'A59809C00HM 少一半冒号。 不知这要怎么纠正?
Memo1
SELECT CONVERT(VARCHAR(30), VPE.DATUMUHRZEIT,111) AS DATE, LP_TYPE.TYP_DESC as type,AVG(LP_DATA.lichtstrom) AS AVG_LUMEN FROM LP_DATA INNER JOIN VPE ON LP_DATA.ID_VPE=VPE.ID_VPE INNER JOIN LP_TYPE ON LP_DATA.ID_TYP=LP_TYPE.ID_TYP WHERE VPE.DATUMUHRZEIT BETWEEN '2013/1/1 00:00:00' and '2013/1/1 23:59:59''A59809C00HM=LP_TYPE.TYP_DESC