我有一个数据库,里面有四个表,每个表中有四个字段一致的,我想建立一个查询请问如何连接?我想用ADODC+datagrid可以实现吗?

解决方案 »

  1.   

    可以实现!不知道你是要用一个DataGrid显示四张表的所有内容还是,每一张表都有一个DataGrid显示。
      

  2.   

    想通过查询,实现合并成一个临时数据库,并用ADODC记录集,通过datagird反映出来。
    我的四个数据库是:
    sgjbxi:结构是:事故编号 日期 时间 主干道 辅道 目的地 基层 路线 自编号 牌照 车辆性质 司老职号 司新职号 司姓名 司身份证号  对象 责任 性质
    FYJA:结构是:职号 事故日期 编号 姓名 主干道 辅道 结案日期 结案费用 司机责赔 预计理赔 损失FYSB:结构是:职号 事故日期 编号 姓名 主干道 辅道 送保日期 送保费用
    FYLP:结构是:职号 事故日期 编号 姓名 主干道 辅道 理赔日期 理赔费用
    其中:事故编号=编号;事故日期=日期;司老职号=职号,其他内容都对等。
    通过对这四个表的连接
    我想要的是:SGJBXI表中:事故编号,日期,主干道,辅道,基层,路线,牌照,司老职号,司姓名;
                   FYJA表中:结案日期,结案费用,司机责赔,预计理赔,损失;
                   FYSB表中:送保日期,送保费用
                   FYLP表中:理赔日期,理赔费用
    放在并用ADODC记录集,通过datagird反映出来。(事故编号是唯一的,我对这四个数据库没有设主键)
    另外,有的事故没有理赔的,所以部分事故编号等在FYSB和FYLP中没有记录的。
    不知道可以实现吗?请赐教!万分感谢!
      

  3.   

    可以需要查询语句:
    select a.事故编号,a.日期,a.主干道,a.辅道,a.基层,a.路线,a.牌照,a.司老职号,a.司姓名,
    b.结案日期,b.结案费用,b.司机责赔,b.预计理赔,b.损失,
    c.送保日期,c.送保费用,d.理赔日期,d.理赔费用
    from SGJBXI a, FYJA b,FYSB c,FYLP d where a.事故编号=b.编号 and 事故编号=c.编号 and a.事故编号=d.编号
      

  4.   

    是不是把这个查询结果放到ADODC中去?
      

  5.   

    说了半天,也没有说是什么数据库。mssql,sybase可以如下select 
    t1.事故编号,t1.日期,t1.主干道,t1.辅道,t1.基层,t1.路线,t1.牌照,t1.司老职号,t1.司姓名
    t2.结案日期,t2.结案费用,t2.司机责赔,t2.预计理赔,t2.损失
    t3.送保日期,t3.送保费用,
    t4.理赔日期,t4.理赔费用 
    from sgjbxi t1
    left join FYJA t2 on t1.事故编号 = t2.编号 and t1.事故日期 = t2.日期 and t1.司机姓名= t2.姓名 and t1.主干道 = t2.主干道 and t1.辅道 = t2.辅道
    left join FYSB t3 on t1.事故编号 = t3.编号 and t1.事故日期 = t3.日期 and t1.司机姓名= t3.姓名 and t1.主干道 = t3.主干道 and t1.辅道 = t3.辅道
    left join FYLP t4 on t1.事故编号 = t4.编号 and t1.事故日期 = t4.日期 and t1.司机姓名= t4.姓名 and t1.主干道 = t4.主干道 and t1.辅道 = t4.辅道 由于你的职号具有不确定性,所以未作为查询条件. 具体你可以参看上面的更改.
      

  6.   

    是一个安全行车的数据库,里面有上述表,我想用把查询结构存入临时表,在用ADODC+DATAGRID打开它,能行吗?
    我的想法是:
    1、怎样把楼上查询得到的数据存在临时表中?
    2、再把临时表的记录,设置查询条件,调出某些记录
    3、利用adodc+datagrid打开这些记录
    4、把这些记录导出EXECL
    5、打开execl
    请求高手相助!万分感激!!
      

  7.   

    select 
    t1.事故编号,t1.日期,t1.主干道,t1.辅道,t1.基层,t1.路线,t1.牌照,t1.司老职号,t1.司姓名 
    t2.结案日期,t2.结案费用,t2.司机责赔,t2.预计理赔,t2.损失 
    t3.送保日期,t3.送保费用, 
    t4.理赔日期,t4.理赔费用 
    from sgjbxi t1 
    left join FYJA t2 on t1.事故编号 = t2.编号 and t1.事故日期 = t2.日期 and t1.司机姓名= t2.姓名 and t1.主干道 = t2.主干道 and t1.辅道 = t2.辅道 
    left join FYSB t3 on t1.事故编号 = t3.编号 and t1.事故日期 = t3.日期 and t1.司机姓名= t3.姓名 and t1.主干道 = t3.主干道 and t1.辅道 = t3.辅道 
    left join FYLP t4 on t1.事故编号 = t4.编号 and t1.事故日期 = t4.日期 and t1.司机姓名= t4.姓名 and t1.主干道 = t4.主干道 and t1.辅道 = t4.辅道
      

  8.   

    最好是用 ADODB 速度也快。一次查询显示多个表
      

  9.   

    Private Sub Cmdfind_Click()
    select 
    t1.事故编号,t1.日期,t1.主干道,t1.辅道,t1.基层,t1.路线,t1.牌照,t1.司老职号,t1.司姓名 
    t2.结案日期,t2.结案费用,t2.司机责赔,t2.预计理赔,t2.损失 
    t3.送保日期,t3.送保费用, 
    t4.理赔日期,t4.理赔费用 
    from sgjbxi t1 
    left join FYJA t2 on t1.事故编号 = t2.编号 and t1.事故日期 = t2.日期 and t1.司机姓名= t2.姓名 and t1.主干道 = t2.主干道 and t1.辅道 = t2.辅道 
    left join FYSB t3 on t1.事故编号 = t3.编号 and t1.事故日期 = t3.日期 and t1.司机姓名= t3.姓名 and t1.主干道 = t3.主干道 and t1.辅道 = t3.辅道 
    left join FYLP t4 on t1.事故编号 = t4.编号 and t1.事故日期 = t4.日期 and t1.司机姓名= t4.姓名 and t1.主干道 = t4.主干道 and t1.辅道 = t4.辅道能不能把上述查询内容存入临时或固定表中一边下面操作!!!万分感谢!sgjbxi改成临时或固定表的名字If Cmbzw = "" And CmbJC = "" And CmbLX = "" And Text1 = "" And Cmbxz = "" And Cmblk = "" And ChkDATE.Value = 0 Then
            MsgBox "没有定义查询条件,请定义!", vbExclamation, "查询校验"
            Exit Sub
        End If
         '查询条件确认
        Dim sSql As String: sSql = "1=1"
        If CmbJC <> "" Then
            sSql = sSql & " AND sgjbxi.基层='" & Trim(CmbJC) & "'"
        End If
        If CmbLX <> "" Then
            sSql = sSql & " AND sgjbxi.路线='" & Trim(CmbLX) & "'"
        End If
        If Text1 <> "" Then
            sSql = sSql & " AND sgjbxi.司老职号='" & Trim(Text1) & "'"
        End If
        If Cmbxz <> "" Then
            sSql = sSql & " AND sgjbxi.性质='" & Trim(Cmbxz) & "'"
        End If
            If Cmblk <> "" Then
            sSql = sSql & " AND sgjbxi.路口='" & Trim(CmbLX) & "'"
        End If
        If Cmbzw <> "" Then
            sSql = sSql & " AND sgjbxi.追尾='" & Trim(Cmbzw) & "'"
        End If
        If ChkDATE.Value = 1 Then
            sSql = sSql & " AND sgjbxi.日期 between #" & Format(Date1, "mm-dd-yy") & "# AND #" & Format(Date1, "mm-dd,yy") & "#"
        End If
        
        '开始查询
        Call openconn
            Dim sReSql As String
            sReSql = "SELECT * FROM sgjbxi  WHERE " & sSql & " ORDER BY sgjbxi.日期   DESC" '按定义查询
           Adodc1.RecordSource = sReSql
           Adodc1.Refresh
           DataGrid1.Refresh
    With Adodc1
    If .Recordset.RecordCount > 0 Then
    .Recordset.MoveFirst
    End If
    Frame3.Caption = "当前自定义查询结果:" & "找到" & Adodc1.Recordset.RecordCount & "条记录。"
    End WithDim xlApp As Object
      Dim xlBook As Object
      Dim xlSheet As Object
      Dim xlQuery As Object
     Dim File As String
        
        File = App.Path & "\报表\道路交通事故情况查询.xls"
      Set xlApp = CreateObject("Excel.Application")
      Set xlBook = xlApp.Workbooks().Add
      Set xlSheet = xlBook.Worksheets("sheet1")
      Set xlQuery = xlSheet.QueryTables.Add(Adodc1.Recordset, xlSheet.Range("A1"))
      xlApp.Visible = False
      With xlQuery
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = False
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = 1
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .FieldNames = True
        .Refresh
      End With
      xlApp.DisplayAlerts = False
      xlBook.SaveAs File '要保存的文件
      xlBook.Close
      xlApp.Quit
      Set xlApp = Nothing
      Set xlBook = Nothing
      Set xlSheet = Nothing
      Set xlQuery = NothingEnd Sub