퀵리포트를 사용해서 출력을 할려고 하는데요..
도대체 뭐가 잘못된건지 자꾸 NOT FOUND라고 그러네요..
소스는요..
procedure TFrmBuyPrint.GetPrintData(prFlag : Boolean);
var
SQLString,buyingDate : String;
begin
BuyingDate := FormatDateTime('YYYY-MM-DD',PicBuyingDate.Date);
QlblDate.Caption := buyingDate;
QlblToMart.Caption := Cbobuy.Text;
with Query do
begin
Close;
SQL.Clear;
SQLString := 'Select a.Item_Code,b.Item_Name,a.Buying_Date,a.Qty,a.Item_Price, d.Tot_Price,c.Buy_Name';
SQLString := SQLString + ' from tb_Layin a, Bas_Item b, Bas_Buy c, tb_buy_ledger d';
SQLString := SQLString + ' where a.Item_Code=b.Item_Code and a.Buyer_Code=:c.Buy_Code and Buying_Date=:Buying_Date';
SQL.Add(SQLString);
Parameters.ParamByName('BUYING_DATE').Value := BuyingDate;
Parameters.ParamByName('BUY_NAME').Value := Cbobuycode.Text;
Open;
QRExpr1.Expression := 'SUM(QTY)';
QRExpr2.Expression := 'SUM(ITEM_PRICE)';
QRExpr3.Expression := 'SUM(ITEM_PRICE * QTY)';
end;
Code.DataField := 'ITEM_CODE';
ItemName.DataField := 'ITEM_NAME';
Qty.DataField := 'QTY';
EnterPrice.DataField := 'Item_Price';
Code.DataSet.FieldByName('ITEM_CODE').AsString;
ItemName.DataSet.FieldByName('Item_NAME').AsString;
Qty.DataSet.FieldByName('Qty').AsString;
EnterPrice.DataSet.FieldByName('Item_Price').AsString;
If PrFlag then
QuickRep1.Print
else
QuickRep1.Preview;
end;
이렇거든요..
저위에 보면
Parameters.ParamByName('BUY_NAME').Value := Cbobuycode.Text;
이부분에서 에러가 나거든요..NOT FOUND..라고..
그래서 이부분을 주석처리 했더니만..
밑에..
Code.DataSet.FieldByName('ITEM_CODE').AsString;
ItemName.DataSet.FieldByName('Item_NAME').AsString;
Qty.DataSet.FieldByName('Qty').AsString;
EnterPrice.DataSet.FieldByName('Item_Price').AsString;
이부분들이 다 NOTFOUND 라고 또 그러네요..
다 주석처리하면 폼만 달랑 나와요..ㅠㅠ
아거거..로직상의 에러인가요?
분명이 데이타는 다 들어가 있거든요..
테이블을 다 확인해봤는데... 제가 보기엔 이상이 없어요..
제발 아시는 분 답변 좀 해주세요..
그리고..콤보박스에 CHANG 이벤트를 줬더니
INVALID PROPERTY VALUE 라고 에러가 나는데요..
왜 이러는걸까요? 다른폼에선 잘 되거든요..
알려주세요~~~T^T
var
SQLString,buyingDate : String;//<- SQLString이건 필요 없을꺼 같은데요
begin
BuyingDate := FormatDateTime('YYYY-MM-DD',PicBuyingDate.Date);
QlblDate.Caption := buyingDate;
QlblToMart.Caption := Cbobuy.Text;
with Query do
begin
Close;
// SQL.Clear; //<-- sql.text 라고 하면 clear 은 필요없습니다
SQL.text := 'Select a.Item_Code,b.Item_Name,a.Buying_Date'
',a.Qty,a.Item_Price, d.Tot_Price,c.Buy_Name '+
' from tb_Layin a, Bas_Item b, Bas_Buy c, tb_buy_ledger d '+
' where a.Item_Code=b.Item_Code '+
' and a.Buyer_Code=:c.Buy_Code '+
' and Buying_Date=:Buying_Date' ;
ParamByName('c.Buy_Code').Value := Cbobuycode.Text;
// --여기좀이상하네요
//일단은 파라미터를 선언 했는데 그럼 조인은
// 관계가 없어 지는데요......
// c.Buy_Code 는 c 테이블의 Buy_Code 와 같은것을
// 올리실꺼라면 : 을 빼시고요
//아니라면 :Buy_Code 이렇게 해주시고
//ParamByName('Buy_Code').Value := Cbobuycode.Text;
//이렇게 해주심 되고요
ParamByName('Buying_Date').Value := BuyingDate;
Open;
QRExpr1.Expression := 'SUM(QTY)';
QRExpr2.Expression := 'SUM(ITEM_PRICE)';
QRExpr3.Expression := 'SUM(ITEM_PRICE * QTY)';
end; //여기까지가 쿼리 수정입니다 더이상은........
// 이것보고는 실력이 없어서 잘모르겠구요
Code.DataField := 'ITEM_CODE';
ItemName.DataField := 'ITEM_NAME';
Qty.DataField := 'QTY';
EnterPrice.DataField := 'Item_Price';
Code.DataSet.FieldByName('ITEM_CODE').AsString;
ItemName.DataSet.FieldByName('Item_NAME').AsString;
Qty.DataSet.FieldByName('Qty').AsString;
EnterPrice.DataSet.FieldByName('Item_Price').AsString;
If PrFlag then
QuickRep1.Print
else
QuickRep1.Preview;
end;