如何进行两个字段相同的数据窗口的数据比较

l_chlmh 2009-03-09 11:05:34
如题,共有150多个字段(字符型,日期型,数值型),本想一个一个字段的比较,觉得有点不干,想请较一下高手.
昨天一位仁兄帮我写了一块代码,可惜,只支持数值型的。
...全文
135 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dawugui 2009-03-09
  • 打赏
  • 举报
回复
如果是SQL SERVER,可以直接用语句实现.

如何从表A(总表)中找出表B(分表)中不存在的记录组合

假设表A和表B都只有两个字段id,name
如何用一句SQL返回表A中存在的id,name结果集而在表B中不存在的id,name结果集

select A.* from A left join B on A.id=B.id and A.name=B.name where B.id is null

select * from A where not exists(select top 1 * from B where A.ID=B.ID)

这两个都可以.


--前提:表中不能有text、ntext、image、cursor 数据类型的字段。

用CheckSum()最简单:

select * from A where checksum(*) not in (select checksum(*) from B)

----------------------------------------------------------------------


查询表A,表B中重复的记录

select * from A where checksum(*) in (select checksum(*) from B)

查询表A,表B中重复的记录,并把结果输入到表C中。

select * into c from A where checksum(*) in (select checksum(*) from B)
dawugui 2009-03-09
  • 打赏
  • 举报
回复
好象只能这么干?

for i = 1 to 150
if i = 1 or (i >= 4 and i <= 100) or ... --列为数值型的
if dw_1.getitemnumber(某行,i) = dw_2.getitemnumber(某行,i) then
...
else
...
end if
else
if i = 2 ...--列为字符串型的.
if dw_1.getitemstring(某行,i) = dw_2.getitemstring(某行,i) then
...
else
...
end if
else
...其他类型
end if

end if
l_chlmh 2009-03-09
  • 打赏
  • 举报
回复
解决了,谢谢.
lovemoreh 2009-03-09
  • 打赏
  • 举报
回复
我刚才测试通过的代码片段:

any lany_a[], lany_b[]
int li_a, li_b

li_a = integer(sle_1.text) //用来临时输入需要比较的两行行号。
li_b = integer(sle_2.text)

lany_a = dw_1.object.data[li_a]

lany_b = dw_1.object.data[li_b]

if lany_a[3] = lany_b[3] then //本处只对比了一个元素,所有元素的对比自己写吧。
messagebox('', '相等')
else
messagebox('', '不相等')
end if

我刚才测试中,用了real, datetime, long, string四种类型的字段,全通过。
dengmingcai 2009-03-09
  • 打赏
  • 举报
回复
请教一下各位高手,急:
PB中的picture控件加载用PB转出来的JPG图片时出现:Not a JPEG file:starts with 0x42 0x4d错误。
这个JPG图片是我用PB在数据库中二进制转过来的。但我发现这种转出来的JPG,不能用PHOTOSHOP打开,于是我怀疑是PB本身的问题(转出来的JPG是个伪JPG),但后面我用C#写的一个转JPG的文件,发现也是一样不能用PHOTOSHOP打开,同样不能在PB中用picture控件打开,一打开便会出现上面的错误。所以我想应该是别的什么原因,因为我以前的一个同事用JAVA写的转JPG的程序转出来就可以在PB中打开 。经过仔细对比发现即使同一个二进制文件转出来的JPG尺寸也不一样(pb\c#的尺寸是:102*126而JAVA是:295*413),并且JAVA转出来的可以用PHOTOSHOP打开,而我用PB、C#转出来的却不能,麻烦各位大虾PB高手帮忙指点。
dengmingcai 2009-03-09
  • 打赏
  • 举报
回复
看一下是否可以,我没用过。
If dw_1.Ojbect.Original = dw_2.Ojbect.Original Then
MessageBox("simple")
Else
MessageBox("no simple")
End If

609

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder DataWindow
社区管理员
  • DataWindow社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧