85 对编辑框控件进行排序
ctrl+D 依次点击排序
84 放到数组里或者hashmap里,循环比较;
或者在任意值修改过的记个变量m_bEidt;
也可以定义个结构体,把结构比较的单写个函数;
83 VC编辑框控件变量和String类型的变量有什么不同?
Value:值,变量的类型是值(字符串),那么用UpdateData(true)就可以得到EDIT里面的值
Control:控件,可以对其进行操作,如获取EDIT里面的资料可用 m_edit.GetDlgItemText(),
82 SQL中数字直接转成varchar到程序就不会变了
cast(a.系数 as varchar(10))
81 cast(生产周期 as nvarchar(50))
80 学生表(学号,姓名)
成绩表(课程名,学号,成绩)
编写SQL语句,查询每门课程的最高成绩,要求输出列为(课程名,学号,姓名,成绩)
select 课程名,学号,姓名,成绩 from 成绩表 join 学生表 on 成绩表.学号=学生表.学号 group by 成绩表.课程名
select 课程名,学号,姓名,max(成绩) from 成绩表 join 学生表 on 成绩表.学号=学生表.学号 group by 学生表.学号,学生表.姓名,成绩表.课程名
select a.* from 成绩表 a where exists(select 1 from (select max([成绩]) as 成绩,[科目] from 成绩表 group by [成绩],[科目])b
where a.[科目]=b.[科目] and a.[成绩]=b.[成绩])
79 select @Wait=COUNT(1) from BZ_预先发布表_在线 (nolock) where 处理状态='未处理'
if(@@RowCount<>1 or @@error <> 0)
@@RowCount
就是最近一次查询 影响的行数
是个数据库的全局变量
78 一般多重循环用goto效率高
for(int i..)
{
for(int j..)
{
if(..) goto exit;
}
}
exit: ...
77 定义了标签+冒号 比如
a1: int a=0;
然后程序其他地方就可以 goto a1;
76 Update BZ_文章信息表 set 预先出版=COALESCE(预先出版,发布时间,@dtCutTime) where 文章编号=@Sn
COALESCE ( expression [ ,...n ] )
expression任何类型的表达式。
n表示可以指定多个表达式的占位符。
所有表达式必须是相同类型,或者可以隐性转换为相同的类型。
将相同的值作为 expression 返回。返回表达式中第一个非空表达式,
如有以下语句:
SELECT COALESCE(NULL,NULL,3,4,5) FROM dual 其返回结果为:3
75 INSERT INTO BZ_预先发布表_历史(序号, 任务性质, 报纸编号, 文章编号, 到岗时间, 制作方式, 机器人, 处理次数, 优先级, 开始时间, 提交时间, 加工说明, 加工备注, 来源岗位)
select 序号, 任务性质, 报纸编号, 文章编号, 到岗时间, 制作方式, 机器人, 处理次数, 优先级, 开始时间, @dtCutTime, null, 加工备注, 来源岗位
from BZ_预先发布表_在线 where 文章编号=@Sn
and 到岗时间=@Time
74 C# Replace 用法
stringObj.replace("aa","bb")
把stringObj中的aa替换为bb
这样的问题最好自己查阅MSDN,要学会自己学习
73 nodeField.SetAttribute("en","Y");
setAttribute是在某种缓存范围中设置具体的属性,底层原理是在四类Map中插入键值对关系。首先获取要插入数据的范围,例如request或者1楼哥们所说的session,当然还有其他两种。然后用setAttribute(attributeName,attributeValue);的格式插入数据,第一个参数是属性名,字符串类型的数据。,也是以后获取的依据条件,第二个是插入的数据,支持对象属性。获取时用getAttribute("attributeName")就行了。
72
1 nPost=strValue.IndexOf("〖TP");
if (nPost >= 0)
return nPost;
nPost = strValue.IndexOf("[tp");
return nPost;
2 int nPost = strValue.IndexOf("【TP");
return nPost >= 0 ? nPost : strValue.IndexOf("[tp");
71 删除combox下拉重复项
int nIndex = m_comboType.FindString(1,"漏标");
if (nIndex >= 0)
{
m_comboType.DeleteString(nIndex);
}
70 切图扫图 的来源岗位理论上只能是 '编辑选编'或'选编标引',取最后一条这两岗位的记录自然就是来源岗位.
特殊情况下比如手工改的数据,没经过这两岗位
select top 1 岗位名称 from BZ_加工历史表 with(nolock) where 报纸 编号='TSSB20121218' and 岗位名称
in ('编辑选编', '选编标引') order by 到岗时间 desc
69 Update…From(很不幸,Sqlite是不支持的)
update BZ_报纸登记表 with(rowlock) set 编辑人员=RY_雇员检查视图.雇员账号,标引人=RY_雇员检查视图.姓名 from
RY_雇员检查视图
where RY_雇员检查视图.岗位名称='编辑选编' and BZ_报纸登记表.报纸编号='%s' and
RY_雇员检查视图.姓名='%s' ", strSn, strMan
68 NOLOCK可以忽略锁,直接从数据库读取数据。这意味着可以避开锁,从而提高性能和扩展性。但同时也意味着代码出错的可能性存在。你可能会读取到运行事务正在处理的无须验证的未递交数据。 这种风险可以量化。
67 ACM竞赛题
66 int CompareNoCase( LPCTSTR lpsz ) const; 这个函数使用lstrcmpi函数对一个CString和另一个CString进行比较。由参数lpsz指定这个用于比较的string。如果两个对象完全一致则返回0,如果小于lpsz,则返回-1,否则返回1.比如,利用CompareNoCase比较str与lpsz,等同于区分大小写比较str与lpsz的第一个相异字符,如果str该处的字符比lpsz大,则字符串str大于lpsz,返回1;如果str该处的字符比lpsz小,则字符串str小于lpsz,返回-1;str与lpsz内容完全一致则返回0。
65 select a.* from
(select *, ROW_NUMBER() OVER (partition by 岗位名称 order by 到岗时间 desc) as rownum
from dbo.CT_加工过程表) as a
where a.rownum = 1
order by 开始时间
partition by 岗位名称 order by 到岗时间
表示根据岗位名称分组(也可再加入分组列),在分组内部根据到岗时间排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)
分组排序
ROW_NUMBER() OVER (order by 到岗时间) as rownum
1 下载标引
2 下载标引
3 选编
4 标引检查
ROW_NUMBER() OVER (partition by 岗位名称 order by 到岗时间) as rownum
1 下载标引
2 下载标引
1 选编
1 标引检查
partition by 按岗位名称分组
64 ppdb->BeginTransaction();
if(!ppdb->Execute((LPCTSTR)strSQL1))
{
ppdb->RollbackTransaction();
return false;
}
if(!ppdb->Execute((LPCTSTR)strSQL2))
{
ppdb->RollbackTransaction();
return false;
}
ppdb->CommitTransaction();
63 切图,扫图岗位:岗位数据来源分两种,一种是电子报,一种是纸质报,电子报责任岗位为选编标引,纸质报责任岗位为编辑选编
62 void *pRsNew;
if(!MS_CreateRecordSet(GetDatabase(), &pRsNew))
{
AfxMessageBox("无法建立数据集!");
return;
}
61 select dbo.BZ_加工历史表.加工人名, dbo.BZ_加工历史表.报纸编号,dbo.BZ_报纸登记表.标引人,dbo.BZ_报纸登记表.收到日期
from dbo.BZ_加工历史表
inner join dbo.BZ_报纸登记表 on dbo.BZ_加工历史表.报纸编号 = dbo.BZ_报纸登记表.报纸编号
where dbo.BZ_报纸登记表.收到日期 >= '2013-01-01' and dbo.BZ_报纸登记表.标引人 = '高向婷'
and dbo.BZ_加工历史表.报纸编号 = 'cjjd20121227'
60 查看下载文件路径
select B.文件序号,B.文件名,B.扩展名,B.文件大小,B.修改时间,B.文件路径,A.相对路径 from PN_岗位文件表 A,PN_电子文件表 B
where A.岗位名称='备份' and A.编号=1012460497 and A.到岗时间='2012-12-06 17:05:06' and A.输入输出='输入'
and A.文件序号=B.文件序号
59 备份下载,filesMan.Execute()执行成功,即bRet返回1,本地会成功新建光盘文件夹
58 排除LWSJ120976 LWSJ120188 LWSJ120079 LWSJ121243 LWSJ121264
select * from XW_岗位信息表_备份_光盘信息 where 光盘状态 = '待刻录' and CAST(RIGHT(光盘号, 4) as int)
not in (0976, 0188, 0079, 1243, 1264) order by 光盘号 desc
57 ODBC32.dll不能注册解决办法
(1)运行输入msconfig回车,打开系统配置实用程序,在启动项目中查找一个名为“****.dll”,如果有将它前面的钩去掉,然后按应用确定(如果没有跳过)。
(2)运行输入regedit回车打开注册表,选编辑查找一个名为“****.dll”的键值项,找到后删除,多查找几次删除干净,然后重新启动电脑即可。
(3)去掉自启动项 开始/运行输入regedit回车打开注册表编辑器,依次展开 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run] 右侧, [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]在右侧, 看看有没有你要找的选项(****.dll),如果有删除,重启即可。
如果上述方法无效,请修复一下系统:
1)开机按F8不动到高级选项出现在松手,选“最近一次的正确配置”回车修复。
2)请开机按F8进入到安全模式中用系统自带的系统还原,还原到你没有出现这次故障的时候修复。
3)如果故障依旧,使用系统盘修复,打开命令提示符输入SFC /SCANNOW 回车(SFC和/之间有一个空格),插入原装系统盘修复系统,系统会自动对比修复的。
4) 如果故障依旧,在BIOS中设置光驱为第一启动设备插入系统安装盘按R键选择“修复安装”即可。
5)如果故障依旧,建议重装操作系统。
56 Xerces Panic Error 解决方法
开始菜单 -> 运行 -> regedit.exe 删除注册表里的HKEY_CLASSES_ROOT\MIME\Database\Charset这个项就可以了,记得要全部删除哦!
55 报纸线install未能成功,替换C:\windows\*.ocx文件
对于.ocx未能成功注册的解决方法
vista 下 regsvr32 注册DLL时报0x8002801c
老兄的本本用的vista系统,用建行网银出的E路护航软件,每次装成功了但进去做交易都提示未安装E路护航软件,就象没装这个东东一样,研究了一下,打算用regsvr32注册一下dll看,结果报错0x8002801c,网上搜了一下,都是英文的,没玩过vista,自己翻过来可能不准呵呵,大概看个意思吧:
1)窗口+R,在输入框里输入 secpol.msc后确定运行
2)“本地策略”下有一个“安全选项”
3)在窗口右边,找到所有以“ User Account Control”开头的项(也有可能是“用户帐户控制”开头的),将每一项这些项后的security setting(安合设定)设成“禁用”或“未配置” (在属性里做修改)
4)重新启动电脑
5)窗口+R,在输入框里输入
regsvr32 c:\windows\system32\CCBNetSignCom.dll
54 ado2.h
// 解决调存储过程, 内存泄露问题
if(m_pParameter->Value.vt == VT_BSTR || m_pParameter->Value.vt == VT_NULL)
::SysFreeString(m_pParameter->Value.bstrVal);
53 查看exe文件中所用到的dll
C:\Program Files\Microsoft Visual Studio\Common\Tools
DEPENDS.EXE
52 inner join 显示两表中符合同一条件的记录
full outer join 显示两表中所有记录
left outer join 用于返回第1个表中的所有记录行以及第2个表中满足匹配条件的记录行
right outer join 用于返回第2个表中的所有记录行以及第1个表中满足匹配条件的记录行
51 update BZ_文章信息表 set 页数 = ceiling(DATALENGTH(正文)/2554) where 页数 is null
50 孙鑫第四课,画线
CDrawView::OnMouseMove()
{
CClientDC dc(this);
CPen pen(PS_SOLID, 1, RGB(255, 0, 0));
if(m_bDraw == TRUE)
{
dc.SetROP2(R2_BLACK);
dc.MoveTo(m_ptOrigin);
// dc.LineTo(point);
dc.LineTo(m_ptOld);
// dc.MoveTo(m_ptOrigin);
dc.MoveTo(m_ptOld);
dc.LineTo(point);
// m_ptOrigin = point;
m_ptOld = point;
}
49http://www.pudn.com/search_db.asp?keyword=VC
48 a 可以用消息队列,
服务的话windows服务/webservice服务都行,看个人的习惯.
最新的技术是wcf服务
b 发送邮件的.NET下有相关的基本类库支持你可以看看。
这个命名空间:System.Net.Mail
c 你先调试发邮件的代码,等调试好了,在迁移到WCF或者WebService
d 然后就可以开放给用户服务接口了。
e 其实简单点说WCF或者WebService就是为了给网络上的用户开放接口。
47 ;with tbAll as
(select * from V_PN_文件信息视图 where 编号 in (select 编号 from V_BACKUP_正备份
where 光盘号 = 'lwsj121166') and 岗位名称 = '备份'),
tbNum as (select tbAll.*, ROW_NUMBER() OVER (partition by 编号 order by 编号) as rownum
from tbAll)
select * from tbNum where rownum = 1
46 ;with tbAll as
(select * from V_PN_文件信息视图 where 编号 in (select 编号 from V_BACKUP_正备份
where 光盘号 = 'lwsj121166') and 岗位名称 = '备份')
,tbDistinct as (select distinct 编号 from tbAll)
SELECT a.编号, b.*
FROM tbDistinct a
OUTER APPLY (SELECT TOP 1 * FROM tbAll WHERE 编号 = a.编号) b
45http://c.chinaitlab.com/cc/example/List_19.html
C++实例编程
44 在需要换行的字符前增加\r\n,可以实现换行
43 (float)((int)(f*100+0.5))/100.0
float a=atof(m_strAvgWorkPeriod);
stmpField.Format("%.4f",a);
42 if语句里做判断,常量最好放前面以防止if(x=1),而反过来if(1=x)编译不能通过
41 显示对话框只需定义它的对象,使用DoModel方法就可显示
40 对话框控件在使用默认ID名字时,不能使用Ctrl+W新建变量,修改ID名字即可
39 ADOCommand控件不能返回记录集,它的作用仅是执行一条SQL语句!
若要返回记录集,可用ADOQuery、ADOProc、ADOTable等可以返回记录集的控件。
CString sExtClause, sFileExtClause;
比如, 要下载"自动标引"岗位的所有PDF,TIF...文件和编号为"123456789"的所有PDF, TIF文件
那就要用两个SQL来做
于是
SQLPrefix = "SELECT * FROM TABLENAME WHERE 岗位名称 = '自动标引'"
SQL1 = SQLPrefix + sExtClause;
SQL2 = SQLPrefix + sFileExtClause;
if(strTaskKind == "PDF")
{
sExtClause.Format("and (扩展名 = 'PDF' or 扩展名 = 'TIF' or 扩展名 = 'KDH' or 扩 展名 = 'SAV' or 扩展名 = 'XML')");
sFileExtClause.Format("and (文件名 like '%%%ld.pdf' or 文件名 like '%%%ld.tif' or 文件 名 like '%%%ld.kdh' or 文件名 like '%%%ld.sav'\
or 文件名 like '%%%ld.xml')", (long)nSN, (long)nSN, (long)nSN, (long) nSN, (long)nSN);
}
else if(strTaskKind == "TIF")
{
sExtClause.Format("and (扩展名 = 'TIF' or 扩展名 = 'NH' or 扩展名 = 'SAV' or 扩 展名 = 'XML')");
sFileExtClause.Format("and (文件名 like '%%%ld.tif' or 文件名 like '%%%ld.nh' or 文件名 like '%%%ld.sav' or 文件名 like '%%%ld.xml')",
(long)nSN, (long)nSN, (long)nSN, (long)nSN);
}
CString sSql;
如果要检索字段中包含一部分内容,就要以Like做检索, 通常是 Like '%内容%'
就是说字段中含有"内容"二字的话, 就都能检出来
一般来说, 用Like检索的话, 是相当慢的
但是, 如果在确切的知道, "内容"是在字段值的前面或是后面的话, 就可以只有前匹配和后匹配
Like '%内容'
这个表示,"内容'是在字段值的最后面
同样的, Like '内容%' , 表示"内容"是在字段值的最前面, 这样就会要比 Like '%内容%'要快得多
38 select sum(cast(文件大小 as bigint)) from V_PN_文件信息视图 with (nolock) where 输入输出 = ' 输入' and 岗位名称 = '备份' and
文件状态 = '存在' and 编号 in (select 编号 from XW_岗位信息表_备份_光盘信息 where 光盘号 = 'LWSJ121071')
select cast(sum(文件大小) as bigint)
decimal(38,0)
37 private static string GetWordContent
静态方法不用实例化 函数就可以用
否则话 需要这么用
Helper helper = new Helper();
helper.GetWodContet("123")
36 备份机器人增加逻辑
可以加一个,从库里拿到文件大小,进行判断,然后下载,下载下来后再检测一下本地的文件大小是不是库里的值
两个大小比较不一致的话这条就报出来
35 datediff(ww,[统计日期],getdate())=1
34 select a列,b列,a列+b列 as a+b的和 from 表
这里限于a,b列都是数值类型,如果是字符串需要处理。
select sum(a+b) as c from table
33 m_btnSave.ShowWindow(SW_HIDE); // 隐藏按钮
m_btnSave.ShowWindow(SW_SHOW); // 显示按钮
m_btnPre.SetIcon(IDI_PRE); // 设置图标
m_btnPre.EnableWindow(FALSE); // 窗口置灰
m_btnPre.EnableWindow(TRUE); // 可用
32 将表B的数据追加进表A
APPEND FROM d:\jlrb20120419.dbf(B表)
31 只显示小数点后的两位
cast(最大加工周期 as decimal(10,2))
30 char szBuf[10];
itoa(strXBTS, szBuf, 10);
29 CString sTmp;
sTmp.Format("下载图片数: %d, 下载标记数: %d, 不一致, 无法保存!", m_nPicDownCount, nDownCount);
AfxMessageBox(sTmp);
28 SELECT 文章编号 FROM BZ_文章信息表 where 报纸编号 = '"+m_strNewsNum+"' and 文章编号 <> '"+strFileNum+"' and left(cast(正文 as char(60)), 25) = '"+MyLeft(strContent, 25)+"';
27 光盘号 in 'LWSJ120235' and 'LWSJ120241'
select * from XW_岗位信息表_备份_光盘信息 where cast(right(光盘号,3) as int) between 235 and 241
1 跨工程调用类中方法?
*只在头文件里增加路径
*头文件引用
*那用就在那写,如果有dll要加lib引用
*加在StdAfx.h是这个工程里可以用,
*加在某个类里,只有这个类可以用
2 获取表头字段总数
int nFieldCount = MS_GetFieldCount(pRs);
取记录
MS_Open(pRs,strSql)
字段名
MS_GetFieldName(pRs, i, szBuf)
行数
MS_GetRecordCount(pRs)
3 HMENU Handle to a menu.
CMenu类是封装的Windows HMENU 。它提供了成员函数,用于创建,跟踪,更新和销毁菜单。
4 & &&
if(a&b){
//如果a满足条件,b不满足条件,还是会执行if里的内容
}
if(a&&b){
//a和b的条件都满足时,才会执行if里的内容
}
&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。
if(expression1 & expression2){}
中expression1 和expression2 无论expression1返回true还是false,都会继续判断expression2的返回值
if(expression1 && expression2){}
中如果expression1 返回false,那么expression2 不执行,跳出if语句,
如果expression1 返回true,继续判断expression2
切图线
5 遇到报线程错误一般是文件服务器网络不通了
机器人
6 造成下载文件数,与光盘信息表本数,不一致
可能的原因
库缺文件,或有重复
那就是判断该继续下刚才那张盘还是另起新盘的地方有问题
应该有个地方判断当前下载目录的容量,满了就不继续往里放
7 Cannot access the ClassView information file. ClassView informaion will not be available.
解决办法:关闭工程,删除clw,ncb文件,重新打开,将自动生成ClassView 文件
8 内存不能为只读
解决办法:注册所有dll文件,开始-运行, 输入“cmd ”回车在命令提示符下输入:
for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1回车
完成后,再输入下面
for %i in (%windir%\system32\*.ocx) do regsvr32.exe /s %i回车
以及运行install.bat,重启电脑
9 .ncb .aps .clw .plg .opt .pch都可以直接删除
10.有些文档加工的时候就缺了东西
机标机器人
11. ExtractWord.DLL没有debug版的dll,用release调试就可以
12. unicode的映射表是字体字典的一部分,缺了这个,就可能会导致乱码,是PDF里面的东西
13. inner join 用法
SELECT dbo.BZ_文章信息表.正标题, dbo.BZ_文章信息表.副标题, dbo.BZ_文章信息表.正文, dbo.BZ_报纸登记表.出版日期, dbo.BZ_报纸协议库.CN, dbo.BZ_文章信息表.文章编号, dbo.BZ_文章信息表.报纸编号, dbo.BZ_报纸登记表.报纸中文名, '' AS 分类号
FROM dbo.BZ_报纸登记表 INNER JOIN dbo.BZ_文章信息表 ON dbo.BZ_报纸登记表.报纸编号 = dbo.BZ_文章信息表.报纸编号 INNER JOIN
dbo.BZ_报纸协议库 ON dbo.BZ_报纸登记表.邮发号 = dbo.BZ_报纸协议库.邮发号
14. select * from TableName with (nolock);
在写查询语句的时候表名后面写上 with (nolock),这样表不容易死锁
15 两个类中定义变量时,用相同的名字,不会受影响
两个类中使用第三个类的一个变量,不会有影响
16 存储过程,函数,游标,临时表,CTE
cte 公用表达式
游标就是一行一行的查询
;with A as (select *from test)
select *From A
A是一个公用表达式
在接下来的SQL语句中可以直接用
17 C#调用外部dll,摘自机标机器人FormAuto.cs
[DllImport("ExtractWord.DLL", EntryPoint = "Extract_Word_Initial", SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
public static extern int Extract_Word_Initial(int language, bool delsim);
int nRet = Extract_Word_Initial(1, true);
18 时间戮是指文件属性里的创建、修改、访问时间。
19 数字签名 以电子形式存在于数据信息之中的,或作为其附件的或逻辑上与之有联系的数据,可用于辨别数据签署人的身份,并表明签署人对数据信息中包含的信息的认可。
20 pch预编译头文件(precompiled headers)
21 异常有8种
// Exceptions:
// System.IO.IOException:
// The destination file already exists.
//
// System.ArgumentNullException:
// sourceFileName or destFileName is null.
//
// System.ArgumentException:
// sourceFileName or destFileName is a zero-length string, contains only white
// space, or contains invalid characters as defined in System.IO.Path.InvalidPathChars.
//
// System.UnauthorizedAccessException:
// The caller does not have the required permission.
//
// System.IO.FileNotFoundException:
// sourceFileName was not found.
//
// System.IO.PathTooLongException:
// The specified path, file name, or both exceed the system-defined maximum
// length. For example, on Windows-based platforms, paths must be less than
// 248 characters, and file names must be less than 260 characters.
//
// System.IO.DirectoryNotFoundException:
// The path specified in sourceFileName or destFileName is invalid, (for example,
// it is on an unmapped drive).
//
// System.NotSupportedException:
// sourceFileName or destFileName is in an invalid format.
22 关于使用异常的例子
try
{
File.Move("", "");
}
catch (DirectoryNotFoundException)
{
// 目录不存在
}
catch (FileNotFoundException)
{
// 文件不存在
}
catch (Exception ex)
{
// 其他问题
string error = ex.Message;
}
一个try可以做多个catch
catch里面还可以放try catch
23 取编号, 作者姓名, 导师, 中文题名,但那重复的记录除了编号不同,其它都一样的,用中文题名排重
;with tb_tmp as
(select distinct 编号, 中文题名 from table)
select 编号, 中文题名, 作者姓名, 导师 from table as t
inner join tb_tmp on tb_tmp.编号 = t.编号
order by 作者姓名
;with tb_tmp as
(select distinct 编号, 中文题名 from table)
select t.编号, t.中文题名, t.作者姓名, t.导师 from table as t
inner join tb_tmp on tb_tmp.编号 = t.编号
order by t.作者姓名
24 inner join用法举例
SELECT a.报纸编号, a.到岗时间, a.制作方式, a.加工人名, a.加工状态, b.文章编号, b.正标题, b.副标题, b.引题
FROM dbo.BZ_加工历史表 AS a INNER JOIN
dbo.BZ_文章信息表 AS b ON a.报纸编号 = b.报纸编号 AND LEFT(a.制作方式, 2) = b.制作方式
WHERE (a.岗位名称 = '标引质检')
AND (CASE WHEN len(a.制作方式) = 2 THEN (b.需补图数 = 0)
ELSE (b.需补图数 > 0)END)
25 union all用法举例
SELECT 文章编号,a.制作方式,正标题,引题,副标题,作者机构,栏目,正文,文献类型,语种,版次,抽检时间 FROM BZ_文章信息表 a \
where a.报纸编号='%s' and a.制作方式='%s' AND a.需补图数%s0 and a.命中否=1 and 文章编号 in \
(select 文章编号 from BZ_报纸错误记录表 e, V_BZ_版式质检_最后时间 f where e.发现岗位='%s' AND e.报纸编号='%s'
and e.制作方式='%s' and e.到岗时间= f.到岗时间 and e.报纸编号=f.报纸编号 and e.制作方式=f.制作方式) \
union all select 文章编号,制作方式,正标题,引题,副标题,作者机构,栏目,正文,文献类型,语种,版次,抽检时间 FROM BZ_文章信息表 where 报纸编号='%s' and 制作方式='%s' AND 需补图数%s0 and 命中否=1 and 抽检时间='%s'"
26 查询多表
select b.文章编号,b.总图数, b.需补图数, b.正标题 from BZ_报纸加工表 a, BZ_文章信息表 b where 1<>1