pb dw datasource选择两个表联合查询,当其中一个表没有对应记录时的解决办法

pb dw datasource选择两个表联合查询,当其中一个表没有对应记录时的解决办法

当两个表进行联合查询,以两表的某一公共字段相等作为查询条件。

例如以表1为主表查询,当无论表二中有无对应的记录,都显示表1中查询到的记录。

在dw的datasource中应做如下设置

这样,在dw中就会得到预期的记过。如果选择第一项。则当表2中无对应记录时,则dw不会显示任何记录。

而如果在dw的datasource中将两个表的关联去掉如图:

则当在左侧主表当中查询到1条对应记录时,则在dw中该记录会重复N行,N=表二的行数。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
数据窗口源码介绍 (举例见d_dbit_example.srd,测试数据库为PB自带的EAS Demo DB V120) 1.第一行:release 12; 数据窗口所属PB的版本号,如果想把高版本的datawindow导入低版本的PB中要修改此数字; 2.datawindow()行 通常用修改processing属性,可以把你的数据窗口由grid变成freeform或其它类型 例:freeform:0 grid:1 3.header()行 可以整行复制粘贴,并命名为header[1],header[2],这样可以让数据窗口有多个header 4.table()行 这里全是定义的数据属性,是setitem,update,object.data等方法访问的根源 如果存在table()里的column,数据窗口里可以不存在任何对象,仍然可以访问数据窗口的数据 如果想创建一个空的数据窗口,可以只定义: release 12; table() 5.table(column行) 是第几个column,它的ID就是多少,其中也定义了是否可以update和更新到数据的字段名 6.table(retrieve行) 检索数据使用的SQL语句,可以通过setsqlselect或modify("table.sqlselect")方法去动态修改 修改后要重新定义数据窗口的更新属性 7.column()行 id即是对应table(column行)里的行次,名称(name)可以随便命名,也可以没有,则默认为table(column行)里的name 8.compute()行 计算列,可以通过达式计算显示特定值(具体函数可以见共享里的画笔函数). 9.text()行 有可以代替计算列; 通过定义text的达式,可以实现一列中显示两个字段值,注意结果必须要转换成string类型(而column和compute则不行); 10.htmltable()行 按照格式导出(saveas)html文件,为了保证格式的完整,数据窗口的单位最好设置成pixels GenerateCSS='1' //保持格式及颜色 Border='0' //不要table边框 CellSpacing='0' //单元格无间距(此项在界面上经常设置不上) 注: (1)Grid生成<Table>标签,Freeform生成<DIV> + <SPAN>标签; (2)生成htmltable,不知为何会在CSS中的开始自动加一个分号";",导致excel等浏览器打开不能正常显示格式; (3)band为foreground或background的对象导不出来,可以动态修改后再导出. 11.export.xml()行 定义导出xml文件的格式,并为模板保存名称 使用一定要设置usetemplate值 12.import.xml()行 定义导入xml文件的格式,并为模板保存名称 使用一定要设置usetemplate值 13.达式介绍 略 14.其它也略
可以按照以下步骤来实现: 1. 创建一个Windows窗体应用程序。 2. 添加一个MenuStrip控件,并添加一个ToolStripMenuItem控件作为菜单项。 3. 在ToolStripMenuItem控件的DropDownItems中添加多个ToolStripMenuItem控件作为下拉选项。 4. 给每个ToolStripMenuItem控件添加一个Click事件处理程序,在事件处理程序中获取用户选择的选项,然后使用SQL查询语句查询中符合条件的数据。 5. 将查询结果显示在DataGridView控件中。 下面是一个简单的示例代码: ```vb Public Class Form1 Dim connString As String = "Data Source=(local);Initial Catalog=DatabaseName;Integrated Security=True" Dim conn As New SqlConnection(connString) Dim cmd As New SqlCommand() Dim da As New SqlDataAdapter() Dim ds As New DataSet() Private Sub ToolStripMenuItem1_Click(sender As Object, e As EventArgs) Handles ToolStripMenuItem1.Click '执行查询操作 conn.Open() cmd.CommandText = "SELECT * FROM TableName WHERE ColumnName='Option1'" da.SelectCommand = cmd ds.Clear() da.Fill(ds, "TableName") DataGridView1.DataSource = ds.Tables("TableName") conn.Close() End Sub Private Sub ToolStripMenuItem2_Click(sender As Object, e As EventArgs) Handles ToolStripMenuItem2.Click '执行查询操作 conn.Open() cmd.CommandText = "SELECT * FROM TableName WHERE ColumnName='Option2'" da.SelectCommand = cmd ds.Clear() da.Fill(ds, "TableName") DataGridView1.DataSource = ds.Tables("TableName") conn.Close() End Sub '添加其他选项的事件处理程序... Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load '连接数据库 conn.Open() cmd.Connection = conn conn.Close() End Sub End Class ``` 在上面的代码中,需要将`DatabaseName`替换为实际的数据库名称,`TableName`替换为实际的名,`ColumnName`替换为实际的列名。同,需要将DataGridView1替换为实际的DataGridView控件名称。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wolfalcon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值