以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  SQLserver问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=40253)

--  作者:zhangxl1964
--  发布时间:2013/9/13 9:02:00
--  SQLserver问题
老师:在SQLserver数据库中如何实现,从后台将另一个表中的某几个字段的记录有条件的引用到指定表中。关键是从后台引用!
--  作者:Bin
--  发布时间:2013/9/13 9:04:00
--  
看得不是很懂, 查询某几个字段可以
select 字段1,字段2,字段3 from 表A
带条件
select 字段1,字段2,字段3 from 表A  where 字段4=5

--  作者:zhangxl1964
--  发布时间:2013/9/13 9:13:00
--  
Dim conn As New ADODB.Connection
Dim ConnString As String
Dim sql As String
Dim rs As New ADODB.Recordset
Dim QueryMonth As Date \'自定义日期
Dim StartMonth As Date \'月份第一天
Dim Num As Integer \'员工编号
Dim dr2 As DataRow =e.DataRow
If e.DataRow("审核") = False And  e.DataCol.Name = "编号" Then
    If e.DataCol.Name= "日期"  Or e.DataCol.Name= "编号"
        C
        If conn.state <> 1 Then
            conn.Open (ConnString)
        End If
        
        Num=e.DataRow("编号")
        QueryMonth=e.DataRow("日期")
        StartMonth=CStr(Year(QueryMonth)) & "-" & CStr(Month(QueryMonth)) & "-1"
        sql="select  * from   合同记录 A where A.[编号]="& num & " And A.[登记月份]<=#" & QueryMonth & "# And (A.[辞退日期] Is null Or A.[辞退日期] >=#" & startmonth & "#) And A.[登记月份]=(Select max(合同记录.[登记月份]) As 登记月份 from 合同记录 where 合同记录.[编号]=" & num & " and 合同记录.[登记月份]<=#" & QueryMonth &"#)"
        rs.Open (sql, conn,1,1)
        If rs.RecordCount<>0
            e.DataRow("姓名")=rs.Fields("姓名").Value
            e.DataRow("部门")=rs.Fields("部门").Value
            e.DataRow("班组")=rs.Fields("班组").Value
            e.DataRow("基本工资")=rs.Fields("基本工资").Value
            e.DataRow("月度考核")=rs.Fields("月度考核").Value
            e.DataRow("公积金")=rs.Fields("公积金").Value
            e.DataRow("社会保险")=rs.Fields("社会保险").Value
            e.DataRow("独生费")=rs.Fields("独生费").Value
           
            
        End If
    End If
    
    rs.Close()
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:access代码.txt



--  作者:Bin
--  发布时间:2013/9/13 9:15:00
--  
你这个直接设置数据源 使用SQLCOMMAND即可实现.没必要引用第三方. 另外没发现你代码的问题啊. 还是不懂你意思.
--  作者:zhangxl1964
--  发布时间:2013/9/13 9:19:00
--  
刚才漏了一段
Dim conn As New ADODB.Connection
Dim ConnString As String
Dim sql As String
Dim rs As New ADODB.Recordset
Dim QueryMonth As Date \'自定义日期
Dim StartMonth As Date \'月份第一天
Dim Num As Integer \'员工编号

If e.DataRow("审核") = False And  e.DataCol.Name = "编号" Then
    If e.DataCol.Name= "日期"  Or e.DataCol.Name= "编号"
        C
        If conn.state <> 1 Then
            conn.Open (ConnString)
        End If
        
        Num=e.DataRow("编号")
        QueryMonth=e.DataRow("日期")
        StartMonth=CStr(Year(QueryMonth)) & "-" & CStr(Month(QueryMonth)) & "-1"
        sql="select  * from   合同记录 A where A.[编号]="& num & " And A.[登记月份]<=#" & QueryMonth & "# And (A.[辞退日期] Is null Or A.[辞退日期] >=#" & startmonth & "#) And A.[登记月份]=(Select max(合同记录.[登记月份]) As 登记月份 from 合同记录 where 合同记录.[编号]=" & num & " and 合同记录.[登记月份]<=#" & QueryMonth &"#)"
        rs.Open (sql, conn,1,1)
        If rs.RecordCount<>0
            e.DataRow("姓名")=rs.Fields("姓名").Value
            e.DataRow("部门")=rs.Fields("部门").Value
            e.DataRow("班组")=rs.Fields("班组").Value
            e.DataRow("基本工资")=rs.Fields("基本工资").Value
            e.DataRow("月度考核")=rs.Fields("月度考核").Value
            e.DataRow("公积金")=rs.Fields("公积金").Value
            e.DataRow("社会保险")=rs.Fields("社会保险").Value
            e.DataRow("独生费")=rs.Fields("独生费").Value
           
            
        End If
    End If
    
    rs.Close()


--  作者:狐狸爸爸
--  发布时间:2013/9/13 11:32:00
--  

简单点,用临时表处理更新:

 

http://www.foxtable.com/help/topics/2724.htm