1. 论坛系统升级为Xenforo,欢迎大家测试!
    排除公告

一个问题求教,可能很多人都遇见过,

本帖由 小狼2006-04-26 发布。版面名称:新人报道

  1. 小狼

    小狼 New Member

    注册:
    2006-03-15
    帖子:
    163
    赞:
    1
    Strsql = "SELECT a.area,a.department_id,b.employee_name,c.* FROM rs_department a,rs_employee b,FY_JOURNA c where a.department_id = b.department_id and b.employee_id=c.employeeid "
    AddRs.Open Strsql, cn, 1, 3

    现在我想向FY_JOURNA表中增加数据,请问我应该怎么办.
    FY_JOURNA中字段如下(area,departmentid,EMPLOYEEID,EMPLOYEENAME)

    请大家看看
     
  2. 小狼

    小狼 New Member

    注册:
    2006-03-15
    帖子:
    163
    赞:
    1
    以前遇到的都是打开一个表,然后再向里面添加数据,
    现在我一下子开了3张表,但只向其中一个表添加数据`~
    请问和以前操作有什么不同
     
  3. 小狼

    小狼 New Member

    注册:
    2006-03-15
    帖子:
    163
    赞:
    1
    难道就没人能说说吗`~~
    提供个方法和建议都行
     
  4. 不学无术

    不学无术 Ulysses 的元神

    注册:
    2005-08-31
    帖子:
    16,714
    赞:
    39
    不太明白你只需要向一个表中添加数据,为什么需要打开三个表。
     
  5. 小狼

    小狼 New Member

    注册:
    2006-03-15
    帖子:
    163
    赞:
    1
    主要的工作是打开三张表后~~
    我想执行这个功能

    AddRs.Open Strsql, cn, 1, 3
    If AddRs.EOF Then
    AddRs("area") = Session("area")
    AddRs("departmentid") = Session("department_id")
    AddRs("EMPLOYEEID") = Session("employee_id")
    AddRs("EMPLOYEENAME") = Session("employee_name")
    AddRs("czdate") = Now()
    AddRs.Update
    AddRs.Close
    Set AddRs = Nothing


    向FY_JOURNA表中加入上面的数据
     
  6. 小狼

    小狼 New Member

    注册:
    2006-03-15
    帖子:
    163
    赞:
    1
    我把整个代码贴上:
    Set AddRs = Server.CreateObject("ADODB.Recordset")
    Strsql = "SELECT a.area,a.department_id,b.employee_name,c.* FROM rs_department a,rs_employee b,FY_JOURNA c where a.department_id = b.department_id and b.employee_id=c.employeeid "
    AddRs.Open Strsql, cn, 1, 3
    AddRs.Open Strsql, cn, 1, 3
    If AddRs.EOF Then
    AddRs("area") = Session("area")
    AddRs("departmentid") = Session("department_id")
    AddRs("EMPLOYEEID") = Session("employee_id")
    AddRs("EMPLOYEENAME") = Session("employee_name")
    AddRs("czdate") = Now()
    AddRs.Update
    AddRs.Close
    Set AddRs = Nothing
     
  7. 小狼

    小狼 New Member

    注册:
    2006-03-15
    帖子:
    163
    赞:
    1
    打开三张表主要功能主要是获得相对应的字段
     
  8. 小狼

    小狼 New Member

    注册:
    2006-03-15
    帖子:
    163
    赞:
    1
    这个话题我重新发表过`
    可能我没说清楚
     
  9. 小狼

    小狼 New Member

    注册:
    2006-03-15
    帖子:
    163
    赞:
    1
    如何添加数据,

    Set AddRs = Server.CreateObject("ADODB.Recordset")
    Strsql = "SELECT a.area,a.name,a.department_id,b.employee_name,c.* FROM rs_department a,rs_employee b,FY_JOURNA c where a.department_id = b.department_id and b.employee_id=c.employeeid"
    AddRs.Open Strsql, cn, 1, 3
    If AddRs.EOF Then

    AddRs("area") = Session("area")
    AddRs("departmentid") = Session("department_id")
    AddRs("EMPLOYEEID") = Session("employee_id")
    AddRs("EMPLOYEENAME") = Session("employee_name")
    AddRs("czdate") = Now()
    AddRs.Update
    AddRs.Close
    Set AddRs = Nothing
    End If


    ~~FY_JOURNA 表中字段有如下(area,departmentid,EMPLOYEEID,EMPLOYEENAME,czdate)
    打开三张表主要功能是为了获取相应的字段.

    我想向FY_JOURNA 表中增加数据,请问我应怎么做.因为我打开了三张表,上面的程序肯定错误
     
  10. 不学无术

    不学无术 Ulysses 的元神

    注册:
    2005-08-31
    帖子:
    16,714
    赞:
    39
    我对于你想实现的目的有一些疑问:

    a.department_id = b.department_id and b.employee_id=c.employeeid "

    a 是部门表,b 是职员表

    a.department_id = b.department_id 这个条件在没有其它条件限制的情况下,应该是所有职员了,所以写上这个似乎没有什么意义,同理 b.employee_id=c.employeeid 也就是所有的 FY_JOURNA 记录了。

    另外,a.area 和 c.* 中的 area 字段本身就存在冲突,所以你的 SQL 是不正确的。

    最后根据你讲述的,需要更新的是 c 中的记录,那 a 和 b 充其量也就是个限制条件,你可以根据它们之间的关系,取出 c 中的 id 集合,将这个 id 集合作为条件,取出对应的 c 中的记录,更新之!
     
  11. 小狼

    小狼 New Member

    注册:
    2006-03-15
    帖子:
    163
    赞:
    1
    老大能不能不能帮我把那个SQL写一下啊`
    有点不明白,
     
  12. 小狼

    小狼 New Member

    注册:
    2006-03-15
    帖子:
    163
    赞:
    1
    不学无术我想向你提怎么个问题
    我的这个SQL是不是有点象个数组的样子啊
    表1 后接表1的字段 表2 后接表2的字段 表3后接表3的字段

    取值的时候 数组Array(i,r)
    i的值为1的时候用表1,
    i的值为2的时候用表2,
    i的值为3的时候用表3,
    r代表表中的第几个字段,
     
  13. 不学无术

    不学无术 Ulysses 的元神

    注册:
    2005-08-31
    帖子:
    16,714
    赞:
    39
    我到目前还不能了解你的真实意图,所以也无法帮你写出 SQL 。

    你说你需要使用相对应的字段,但是在你的程序中并没有体现出来。

    而且你所要做的工作是更新所有的记录吗?

    是否可以考虑将提取字段内容和更新数据分作两步操作呢?有时候期望能一步完成的动作只会给自己增加不必要的麻烦。
     
  14. 不学无术

    不学无术 Ulysses 的元神

    注册:
    2005-08-31
    帖子:
    16,714
    赞:
    39
    不是。

    多个表联合查询和一个表查询,返回的形式是一样的,都是一个二维表,行对应着记录,列对应着字段。

    如果你用 rs(0)...rs(n) 的形式来取值,对应的是你在 SELECT 后罗列的字段顺序对应的字段内容。
     
  15. 小狼

    小狼 New Member

    注册:
    2006-03-15
    帖子:
    163
    赞:
    1
    我想做的东西是这样的,
    这个程序是一个系统日志,
    当我执行某个操作的时候例如增加一条数据,
    他就会在系统日志中显示出来,并显示是由某个部门,哪个人操作的.
    所以我要牵涉到多个表操作
    ~~FY_JOURNA就是那个日志表
     
  16. 小狼

    小狼 New Member

    注册:
    2006-03-15
    帖子:
    163
    赞:
    1
    假如不做多表查询的话``
    我都不知道我这个系统日志该怎么做
     
  17. 不学无术

    不学无术 Ulysses 的元神

    注册:
    2005-08-31
    帖子:
    16,714
    赞:
    39
    简单的问题被你复杂化了。

    登录信息中已经记录了该雇员的信息吧?例如 ID,那么你建立一个 Logs 表,记录下操作内容、操作时间和该雇员 ID 即可。

    显示日志列表的时候可以根据联合查询或者关系,从该雇员 ID 获得该雇员的姓名、区域、部门(毕竟雇员表中有个部门 ID 字段)。
     
  18. 小狼

    小狼 New Member

    注册:
    2006-03-15
    帖子:
    163
    赞:
    1
    这个问题KO了`~
    又进步了点
     
  19. 小狼

    小狼 New Member

    注册:
    2006-03-15
    帖子:
    163
    赞:
    1
    问题 KO~~

    长见识~~
    又有点进步了