unit UnitCX;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, Grids, DBGrids, ComCtrls, StdCtrls, Buttons, QRCtrls,
QuickRpt, ExtCtrls;type
TForm1 = class(TForm)
DataSource1: TDataSource;
ADOQuery1: TADOQuery;
ADOConnection1: TADOConnection;
GroupBox1: TGroupBox;
DateTimePicker1: TDateTimePicker;
GroupBox2: TGroupBox;
GroupBox3: TGroupBox;
DBGrid1: TDBGrid;
ComboBox1: TComboBox;
BitBtn1: TBitBtn;
Label1: TLabel;
Label2: TLabel;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
Label5: TLabel;
Label4: TLabel;
procedure FormCreate(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
ADOConnection1.ConnectionString:='Provider=MSDASQL.1;Password=13531880960;Persist Security Info=True;User ID=inputer;Data Source=hlwl';
end;procedure TForm1.BitBtn3Click(Sender: TObject);
begin
close;
end;procedure TForm1.BitBtn1Click(Sender: TObject);
var
j,jh:integer;
y,yj,d,ds,c,cp,w,wdx:double;
sss:string;
begin
with adoquery1 do
begin
close;
sql.Clear;
sql.Add('select o.* , P.垫付款未收已付出票 as 垫付款未收已付出票');
sql.Add('from (SeLECT m.*, n.授信余额 AS 授信余额,n.授信总额 as 授信总额 FROM (SELECT k.*, l.垫付款已收已付 AS 垫付款已收已付');
sql.Add('FROM (SELECT i.*, j.垫付款已收未付 AS 垫付款已收未付');
sql.Add('FROM (SELECT g.*, h.垫付款未收已付未出票 AS 垫付款未收已付未出票');
sql.Add('FROM (SELECT e.*, f.垫付款未收未付 AS 垫付款未收未付');
sql.Add('FROM (SELECT c.*, d .代收货款未收 AS 代收货款未收');
sql.Add('FROM (SELECT a.*,b.代收货款已收 AS 代收货款已收 FROM (SELECT 目的地,收货人姓名 AS 客户名,SUM(总体积) AS 方量,SUM(总重量) AS 吨数,SUM(总运费) AS 总运费 ,(SUM(总运费)-SUM(实收运费)) as 未收运费');
sql.Add('FROM 运单表 WHERE (开单日期 >= '''+datetostr(DateTimePicker1.Date)+''') and (开单日期 <= '''+datetostr(Date2.Date)+''') GROUP BY 目的地, 收货人姓名) a LEFT OUTER JOIN (SELECT 目的地,收货人姓名 AS 客户名,SUM(货款) AS 代收货款已收');
sql.Add('FROM 运单表 WHERE (开单日期 >= '''+datetostr(DateTimePicker1.Date)+''') and (开单日期 <= '''+datetostr(Date2.Date)+''') AND (货款类型 = ''代收'') AND (实收货款总额 > 0)GROUP BY 目的地, 收货人姓名) b ON a.目的地 = b.目的地 AND a.客户名 = b.客户名) c LEFT OUTER JOIN');
sql.Add('(SELECT 目的地, 收货人姓名 AS 客户名,SUM(货款) AS 代收货款未收');
sql.Add('FROM 运单表 WHERE (开单日期 >= '''+datetostr(DateTimePicker1.Date)+''') and(开单日期 <= '''+datetostr(Date2.Date)+''') AND (货款类型 = ''代收'') AND (实收货款总额 = 0)');
sql.Add('GROUP BY 目的地, 收货人姓名) d ON c.目的地 = d .目的地 AND c.客户名 = d .客户名) e LEFT OUTER JOIN');
sql.Add('(SELECT 目的地, 收货人姓名 AS 客户名, SUM(货款) AS 垫付款未收未付 FROM 运单表 WHERE (开单日期 >= '''+datetostr(DateTimePicker1.Date)+''') and(开单日期 <= '''+datetostr(Date2.Date)+''') AND (实收货款总额 = 0) AND (LEFT(货款类型,2)= ''垫付'') AND (实付金额 = 0)');
sql.Add('GROUP BY 目的地, 收货人姓名) f ON e.目的地 = f.目的地 AND e.客户名 = f.客户名) g LEFT OUTER JOIN');
sql.Add('(SELECT 目的地, 收货人姓名 AS 客户名, SUM(货款) AS 垫付款未收已付未出票 FROM 运单表');
sql.Add('WHERE (开单日期 >= '''+datetostr(DateTimePicker1.Date)+''') and(开单日期 <= '''+datetostr(Date2.Date)+''') AND (实收货款总额 = 0) AND (LEFT(货款类型, 2) = ''垫付'') AND (实付金额 > 0) and (支付日期>= getdate()-垫付天数)');//and (支付日期< now()-25)支票兑成钱的.
sql.Add('GROUP BY 目的地, 收货人姓名) h ON g.目的地 = h.目的地 AND g.客户名 = h.客户名) i LEFT OUTER JOIN');
sql.Add('(SELECT 目的地, 收货人姓名 AS 客户名, SUM(货款) AS 垫付款已收未付 FROM 运单表');
sql.Add('WHERE (开单日期 >= '''+datetostr(DateTimePicker1.Date)+''') and(开单日期 <= '''+datetostr(Date2.Date)+''') AND (实收货款总额 > 0) AND (LEFT(货款类型, 2) = ''垫付'') AND (实付金额 = 0)');
sql.Add('GROUP BY 目的地, 收货人姓名) j ON i.目的地 = j.目的地 AND i.客户名 = j.客户名) k LEFT OUTER JOIN');
sql.Add('(SELECT 目的地, 收货人姓名 AS 客户名, SUM(货款) AS 垫付款已收已付 FROM 运单表');
sql.Add('WHERE (开单日期 >= '''+datetostr(DateTimePicker1.Date)+''') and(开单日期 <= '''+datetostr(Date2.Date)+''') AND (实收货款总额 > 0) AND (LEFT(货款类型, 2) = ''垫付'') AND (实付金额 > 0)');
sql.Add('GROUP BY 目的地, 收货人姓名) l ON k.目的地 = l.目的地 AND k.客户名 = l.客户名) m LEFT OUTER JOIN');
sql.Add('(SELECT 联系人 AS 客户名, 所在地 AS 目的地, (最高授信 - 已用授信) AS 授信余额, 最高授信 as 授信总额 FROM 客户表) n ON m.客户名 = n.客户名 AND m.目的地 = n.目的地 ) o ');
sql.Add('LEFT OUTER JOIN (SELECT 目的地, 收货人姓名 AS 客户名, SUM(货款) AS 垫付款未收已付出票 FROM 运单表 where');
sql.Add(' (开单日期 >= '''+datetostr(DateTimePicker1.Date)+''') and(开单日期 <= '''+datetostr(Date2.Date)+''') AND (实收货款总额 = 0) AND (LEFT(货款类型, 2) = ''垫付'') AND (实付金额 > 0) and (支付日期<= getdate()-垫付天数) GROUP BY 目的地, 收货人姓名) p ON o.客户名 = p.客户名 AND o.目的地 = p.目的地');
if trim(combobox1.text)<>'' then
begin
sql.Add('WHERE (p.目的地 = '''+trim(combobox1.Text)+''')');
sql.Add('ORDER BY 垫付款未收已付出票 desc');
end else
sql.Add('ORDER BY 垫付款未收已付出票 desc');
open;
while not eof do
begin
jh:=fieldbyname('方量').Asinteger;
yj:=fieldbyname('总运费').AsFloat;
ds:=fieldbyname('吨数').AsFloat;
cp:=fieldbyname('垫付款未收已付出票').AsFloat;
wdx:=fieldbyname('垫付款未收已付未出票').AsFloat;
j:=j+jh;
y:=y+yj;
d:=d+ds;
c:=c+cp;
w:=w+wdx;
next;
end;
end;
groupbox2.Caption :='查询 结果 共 '+inttostr(adoquery1.RecordCount)+' 条';
groupbox2.Font.Color:=clred;
dbgrid1.Refresh;
label4.Caption :='已兑现支票额:¥'+formatfloat('0,000.00',c);
label5.Caption :='未兑现支票额:¥'+formatfloat('0.00',w);
label3.caption :='总吨数:'+formatfloat('0.000',d)+ ' 总方量:'+inttostr(j)+' 总运费:¥'+formatfloat('0,000.00',y);
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
RlbeNF.Caption :='专线:'+combobox1.Text+' 时间: '+datetostr(DateTimePicker1.Date)+ ' 到 '+datetostr(Date2.Date);
QRLabel3.Caption :=label3.caption;
QRLabel22.Caption := label4.Caption;
QRLabel23.Caption := label5.Caption;
quickrep1.Preview;
end;procedure TForm1.FormShow(Sender: TObject);
begin
ADOConnection1.Connected:=True;
with adoquery1 do
begin
close;
sql.Clear;
sql.Add('select * from 营业点表 ');
open;
while not Eof do
begin
combobox1.items.add(FieldbyName('简称').AsString);
Next;
end;
end;
end;
end.
查询不到5月10号以后的数据
查询到的数据在4月24号以前的没有差额,24号以后的就有,一个一个客户对比时没有差额, 也不知道出错在哪里.....
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, Grids, DBGrids, ComCtrls, StdCtrls, Buttons, QRCtrls,
QuickRpt, ExtCtrls;type
TForm1 = class(TForm)
DataSource1: TDataSource;
ADOQuery1: TADOQuery;
ADOConnection1: TADOConnection;
GroupBox1: TGroupBox;
DateTimePicker1: TDateTimePicker;
GroupBox2: TGroupBox;
GroupBox3: TGroupBox;
DBGrid1: TDBGrid;
ComboBox1: TComboBox;
BitBtn1: TBitBtn;
Label1: TLabel;
Label2: TLabel;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
Label5: TLabel;
Label4: TLabel;
procedure FormCreate(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
ADOConnection1.ConnectionString:='Provider=MSDASQL.1;Password=13531880960;Persist Security Info=True;User ID=inputer;Data Source=hlwl';
end;procedure TForm1.BitBtn3Click(Sender: TObject);
begin
close;
end;procedure TForm1.BitBtn1Click(Sender: TObject);
var
j,jh:integer;
y,yj,d,ds,c,cp,w,wdx:double;
sss:string;
begin
with adoquery1 do
begin
close;
sql.Clear;
sql.Add('select o.* , P.垫付款未收已付出票 as 垫付款未收已付出票');
sql.Add('from (SeLECT m.*, n.授信余额 AS 授信余额,n.授信总额 as 授信总额 FROM (SELECT k.*, l.垫付款已收已付 AS 垫付款已收已付');
sql.Add('FROM (SELECT i.*, j.垫付款已收未付 AS 垫付款已收未付');
sql.Add('FROM (SELECT g.*, h.垫付款未收已付未出票 AS 垫付款未收已付未出票');
sql.Add('FROM (SELECT e.*, f.垫付款未收未付 AS 垫付款未收未付');
sql.Add('FROM (SELECT c.*, d .代收货款未收 AS 代收货款未收');
sql.Add('FROM (SELECT a.*,b.代收货款已收 AS 代收货款已收 FROM (SELECT 目的地,收货人姓名 AS 客户名,SUM(总体积) AS 方量,SUM(总重量) AS 吨数,SUM(总运费) AS 总运费 ,(SUM(总运费)-SUM(实收运费)) as 未收运费');
sql.Add('FROM 运单表 WHERE (开单日期 >= '''+datetostr(DateTimePicker1.Date)+''') and (开单日期 <= '''+datetostr(Date2.Date)+''') GROUP BY 目的地, 收货人姓名) a LEFT OUTER JOIN (SELECT 目的地,收货人姓名 AS 客户名,SUM(货款) AS 代收货款已收');
sql.Add('FROM 运单表 WHERE (开单日期 >= '''+datetostr(DateTimePicker1.Date)+''') and (开单日期 <= '''+datetostr(Date2.Date)+''') AND (货款类型 = ''代收'') AND (实收货款总额 > 0)GROUP BY 目的地, 收货人姓名) b ON a.目的地 = b.目的地 AND a.客户名 = b.客户名) c LEFT OUTER JOIN');
sql.Add('(SELECT 目的地, 收货人姓名 AS 客户名,SUM(货款) AS 代收货款未收');
sql.Add('FROM 运单表 WHERE (开单日期 >= '''+datetostr(DateTimePicker1.Date)+''') and(开单日期 <= '''+datetostr(Date2.Date)+''') AND (货款类型 = ''代收'') AND (实收货款总额 = 0)');
sql.Add('GROUP BY 目的地, 收货人姓名) d ON c.目的地 = d .目的地 AND c.客户名 = d .客户名) e LEFT OUTER JOIN');
sql.Add('(SELECT 目的地, 收货人姓名 AS 客户名, SUM(货款) AS 垫付款未收未付 FROM 运单表 WHERE (开单日期 >= '''+datetostr(DateTimePicker1.Date)+''') and(开单日期 <= '''+datetostr(Date2.Date)+''') AND (实收货款总额 = 0) AND (LEFT(货款类型,2)= ''垫付'') AND (实付金额 = 0)');
sql.Add('GROUP BY 目的地, 收货人姓名) f ON e.目的地 = f.目的地 AND e.客户名 = f.客户名) g LEFT OUTER JOIN');
sql.Add('(SELECT 目的地, 收货人姓名 AS 客户名, SUM(货款) AS 垫付款未收已付未出票 FROM 运单表');
sql.Add('WHERE (开单日期 >= '''+datetostr(DateTimePicker1.Date)+''') and(开单日期 <= '''+datetostr(Date2.Date)+''') AND (实收货款总额 = 0) AND (LEFT(货款类型, 2) = ''垫付'') AND (实付金额 > 0) and (支付日期>= getdate()-垫付天数)');//and (支付日期< now()-25)支票兑成钱的.
sql.Add('GROUP BY 目的地, 收货人姓名) h ON g.目的地 = h.目的地 AND g.客户名 = h.客户名) i LEFT OUTER JOIN');
sql.Add('(SELECT 目的地, 收货人姓名 AS 客户名, SUM(货款) AS 垫付款已收未付 FROM 运单表');
sql.Add('WHERE (开单日期 >= '''+datetostr(DateTimePicker1.Date)+''') and(开单日期 <= '''+datetostr(Date2.Date)+''') AND (实收货款总额 > 0) AND (LEFT(货款类型, 2) = ''垫付'') AND (实付金额 = 0)');
sql.Add('GROUP BY 目的地, 收货人姓名) j ON i.目的地 = j.目的地 AND i.客户名 = j.客户名) k LEFT OUTER JOIN');
sql.Add('(SELECT 目的地, 收货人姓名 AS 客户名, SUM(货款) AS 垫付款已收已付 FROM 运单表');
sql.Add('WHERE (开单日期 >= '''+datetostr(DateTimePicker1.Date)+''') and(开单日期 <= '''+datetostr(Date2.Date)+''') AND (实收货款总额 > 0) AND (LEFT(货款类型, 2) = ''垫付'') AND (实付金额 > 0)');
sql.Add('GROUP BY 目的地, 收货人姓名) l ON k.目的地 = l.目的地 AND k.客户名 = l.客户名) m LEFT OUTER JOIN');
sql.Add('(SELECT 联系人 AS 客户名, 所在地 AS 目的地, (最高授信 - 已用授信) AS 授信余额, 最高授信 as 授信总额 FROM 客户表) n ON m.客户名 = n.客户名 AND m.目的地 = n.目的地 ) o ');
sql.Add('LEFT OUTER JOIN (SELECT 目的地, 收货人姓名 AS 客户名, SUM(货款) AS 垫付款未收已付出票 FROM 运单表 where');
sql.Add(' (开单日期 >= '''+datetostr(DateTimePicker1.Date)+''') and(开单日期 <= '''+datetostr(Date2.Date)+''') AND (实收货款总额 = 0) AND (LEFT(货款类型, 2) = ''垫付'') AND (实付金额 > 0) and (支付日期<= getdate()-垫付天数) GROUP BY 目的地, 收货人姓名) p ON o.客户名 = p.客户名 AND o.目的地 = p.目的地');
if trim(combobox1.text)<>'' then
begin
sql.Add('WHERE (p.目的地 = '''+trim(combobox1.Text)+''')');
sql.Add('ORDER BY 垫付款未收已付出票 desc');
end else
sql.Add('ORDER BY 垫付款未收已付出票 desc');
open;
while not eof do
begin
jh:=fieldbyname('方量').Asinteger;
yj:=fieldbyname('总运费').AsFloat;
ds:=fieldbyname('吨数').AsFloat;
cp:=fieldbyname('垫付款未收已付出票').AsFloat;
wdx:=fieldbyname('垫付款未收已付未出票').AsFloat;
j:=j+jh;
y:=y+yj;
d:=d+ds;
c:=c+cp;
w:=w+wdx;
next;
end;
end;
groupbox2.Caption :='查询 结果 共 '+inttostr(adoquery1.RecordCount)+' 条';
groupbox2.Font.Color:=clred;
dbgrid1.Refresh;
label4.Caption :='已兑现支票额:¥'+formatfloat('0,000.00',c);
label5.Caption :='未兑现支票额:¥'+formatfloat('0.00',w);
label3.caption :='总吨数:'+formatfloat('0.000',d)+ ' 总方量:'+inttostr(j)+' 总运费:¥'+formatfloat('0,000.00',y);
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
RlbeNF.Caption :='专线:'+combobox1.Text+' 时间: '+datetostr(DateTimePicker1.Date)+ ' 到 '+datetostr(Date2.Date);
QRLabel3.Caption :=label3.caption;
QRLabel22.Caption := label4.Caption;
QRLabel23.Caption := label5.Caption;
quickrep1.Preview;
end;procedure TForm1.FormShow(Sender: TObject);
begin
ADOConnection1.Connected:=True;
with adoquery1 do
begin
close;
sql.Clear;
sql.Add('select * from 营业点表 ');
open;
while not Eof do
begin
combobox1.items.add(FieldbyName('简称').AsString);
Next;
end;
end;
end;
end.
查询不到5月10号以后的数据
查询到的数据在4月24号以前的没有差额,24号以后的就有,一个一个客户对比时没有差额, 也不知道出错在哪里.....
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[运单表]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[运单表]
GOCREATE TABLE [dbo].[运单表] (
[编号] [bigint] IDENTITY (1, 1) NOT NULL ,
[运单号] [nvarchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[营业点] [nvarchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[开单人] [nvarchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[开单日期] [datetime] NULL ,
[货物类型] [nvarchar] (4) COLLATE Chinese_PRC_CI_AS NULL ,
[始发地] [nvarchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[目的地] [nvarchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[发货序号] [varchar] (12) COLLATE Chinese_PRC_CI_AS NULL ,
[交货方式] [nvarchar] (8) COLLATE Chinese_PRC_CI_AS NULL ,
[发货人姓名] [nvarchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[收货人姓名] [nvarchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[收货人手机] [nvarchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[货物名称] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[包装] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[总重量] [money] NULL ,
[总体积] [money] NULL ,
[总件数] [int] NULL ,
[中转地] [nvarchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[货款] [money] NULL ,
[货款类型] [nvarchar] (8) COLLATE Chinese_PRC_CI_AS NULL ,
[总运费] [money] NULL ,
[结算方式] [nvarchar] (4) COLLATE Chinese_PRC_CI_AS NULL ,
[备注] [nvarchar] (254) COLLATE Chinese_PRC_CI_AS NULL ,
[出车编号] [int] NULL ,
[驾驶员编号] [int] NULL ,
[状态] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[客户回单张数] [int] NULL ,
[客户扣款] [money] NULL ,
[实收货款1] [money] NULL ,
[实收货款2] [money] NULL ,
[实收货款总额] [money] NULL ,
[退货金额] [money] NULL ,
[货款差额] [money] NULL ,
[货运扣款] [money] NULL ,
[实付金额] [money] NULL ,
[付款标志] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[客户标志] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[上单日期] [datetime] NULL ,
[支付日期] [datetime] NULL ,
[支付人] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[支付时间] [datetime] NULL ,
[支票号] [nvarchar] (15) COLLATE Chinese_PRC_CI_AS NULL ,
[车次号] [nvarchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[方差] [float] NULL ,
[到付运费] [money] NULL ,
[已到货款上传标志] [bit] NULL ,
[实收运价] [money] NULL ,
[实收运费] [money] NULL ,
[查款日期] [datetime] NULL ,
[包装明细] [nvarchar] (230) COLLATE Chinese_PRC_CI_AS NULL ,
[代收款备注] [nvarchar] (200) COLLATE Chinese_PRC_CI_AS NULL ,
[货差货损情况] [nvarchar] (200) COLLATE Chinese_PRC_CI_AS NULL ,
[已扣授信] [bit] NULL ,
[批次号] [char] (2) COLLATE Chinese_PRC_CI_AS NULL ,
[运费结清] [bit] NULL ,
[垫付天数] [bigint] NULL ,
[信用度] [bigint] NULL ,
[配送码] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[打印次数] [int] NULL
) ON [PRIMARY]
GO
SELECT o.*, p.垫付款未收已付出票 AS 垫付款未收已付出票
FROM (SELECT m.*, n.授信余额 AS 授信余额, n.授信总额 AS 授信总额
FROM (SELECT k.*, l.垫付款已收已付 AS 垫付款已收已付
FROM (SELECT i.*, j.垫付款已收未付 AS 垫付款已收未付
FROM (SELECT g.*,
h.垫付款未收已付未出票 AS 垫付款未收已付未出票
FROM (SELECT e.*,
f.垫付款未收未付 AS 垫付款未收未付
FROM (SELECT c.*,
d .代收货款未收 AS 代收货款未收
FROM (SELECT a.*,
b.代收货款已收 AS 代收货款已收
FROM (SELECT 目的地,
收货人姓名 AS 客户名,
SUM(总体积) AS 方量,
SUM(总重量) AS 吨数,
SUM(总运费) AS 总运费,
(SUM(总运费)
- SUM(实收运费))
AS 未收运费
FROM 运单表
WHERE (开单日期 > '2006 - 3 - 1')
GROUP BY 目的地, 收货人姓名)
a LEFT OUTER JOIN
(SELECT 目的地,
收货人姓名 AS 客户名,
SUM(货款)
AS 代收货款已收
FROM 运单表
WHERE (开单日期 > '2006 - 3 - 1')
AND (货款类型 = '代收')
AND (实收货款总额 > 0)
GROUP BY 目的地,
收货人姓名) b ON
a.目的地 = b.目的地 AND
a.客户名 = b.客户名)
c LEFT OUTER JOIN
(SELECT 目的地,
收货人姓名 AS 客户名,
SUM(货款)
AS 代收货款未收
FROM 运单表
WHERE (开单日期 >' 2006 - 3 - 1') AND
(货款类型 = '代收') AND
(实收货款总额 = 0)
GROUP BY 目的地, 收货人姓名) d ON
c.目的地 = d .目的地 AND
c.客户名 = d .客户名)
e LEFT OUTER JOIN
(SELECT 目的地, 收货人姓名 AS 客户名,
SUM(货款) AS 垫付款未收未付
FROM 运单表
WHERE (开单日期 >' 2006 - 3 - 1') AND
(实收货款总额 = 0) AND (LEFT(货款类型,
2) = ' 垫付 ') AND (实付金额 = 0)
GROUP BY 目的地, 收货人姓名) f ON
e.目的地 = f.目的地 AND e.客户名 = f.客户名)
g LEFT OUTER JOIN
(SELECT 目的地, 收货人姓名 AS 客户名, SUM(货款)
AS 垫付款未收已付未出票
FROM 运单表
WHERE (开单日期 >' 2006 - 3 - 1') AND
(实收货款总额 = 0) AND (LEFT(货款类型, 2)
= '垫付') AND (实付金额 > 0) AND
(支付日期 > getdate() - 25)
GROUP BY 目的地, 收货人姓名) h ON
g.目的地 = h.目的地 AND g.客户名 = h.客户名)
i LEFT OUTER JOIN
(SELECT 目的地, 收货人姓名 AS 客户名, SUM(货款)
AS 垫付款已收未付
FROM 运单表
WHERE (开单日期 > '2006 - 3 - 1') AND (实收货款总额 > 0) AND
(LEFT(货款类型, 2) = '垫付') AND (实付金额 = 0)
GROUP BY 目的地, 收货人姓名) j ON
i.目的地 = j.目的地 AND i.客户名 = j.客户名)
k LEFT OUTER JOIN
(SELECT 目的地, 收货人姓名 AS 客户名, SUM(货款)
AS 垫付款已收已付
FROM 运单表
WHERE (开单日期 > '2006 - 3 - 1') AND (实收货款总额 > 0) AND
(LEFT(货款类型, 2) = '垫付') AND (实付金额 > 0)
GROUP BY 目的地, 收货人姓名) l ON k.目的地 = l.目的地 AND
k.客户名 = l.客户名) m LEFT OUTER JOIN
(SELECT 联系人 AS 客户名, 所在地 AS 目的地, (最高授信 - 已用授信)
AS 授信余额, 最高授信 AS 授信总额
FROM 客户表) n ON m.客户名 = n.客户名 AND m.目的地 = n.目的地)
o LEFT OUTER JOIN
(SELECT 目的地, 收货人姓名 AS 客户名, SUM(货款) AS 垫付款未收已付出票
FROM 运单表 where (开单日期 > '2006 - 3 - 1') AND (实收货款总额 = 0) AND
(LEFT(货款类型, 2) = '垫付') AND (实付金额 > 0) AND (支付日期 < getdate() - 25)
GROUP BY 目的地, 收货人姓名) p ON o.客户名 = p.客户名 AND
o.目的地 = p.目的地
WHERE 1=1
ORDER BY p.目的地, p.客户名
建议写成存储过程,然后把脚本拿到SQL区问问
另外,可以试着按以下方法检测代码:
1、既然可以查到DateTimePicker到Now的数据,设DateTimePicker日期为5月10日,或改下系统时间测试
2、注意该字段的数据类型
3、仔细检查拼写与时间的格式问题,包括中英文区别、空格等(可以直接从数据库里复制个日期试下)
4、代码没时间仔细看,上面说的可能都是错的^-^
另外也赞同使用存储过程,一来便于调试,二来也使程序代码大大简洁
注:我是菜鸟,昨天才开始学习使用存储过程,但觉得很好!
AND (支付日期 < getdate() - 25) NOW是在5/10之前还是之后哦? 你说的NOW是指导GETDATE()?
建议 ,把SQL语句一段一段的放到查询分析器里面去分析,能不能得到你想要的数据,然后再一个一个联合的拼起来。
不要一下子进去查。