Foxtable(狐表)用户栏目专家坐堂 → [求助]fill中的表问题


  共有2422人关注过本帖树形打印复制链接

主题:[求助]fill中的表问题

帅哥哟,离线,有人找我吗?
blsu33
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2928 积分:20184 威望:0 精华:0 注册:2012/2/3 17:45:00
[求助]fill中的表问题  发帖心情 Post By:2017/9/24 17:46:00 [只看该作者]

老师,
  FILL产生表D来自ABC三个表,如何做能增加D表一行数据,更新ABC三个表三个表呢?思路是什么

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/9/24 21:30:00 [只看该作者]

 datacolchanged事件,判断表D的列,根据表D主键的值,在abc表查找对应的行,然后新增或者修改或者删除。

 回到顶部
帅哥哟,离线,有人找我吗?
blsu33
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2928 积分:20184 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2017/9/25 9:27:00 [只看该作者]

 .NET Framework 版本:2.0.50727.3053
Foxtable 版本:2017.8.19.1
错误所在事件:
详细错误信息:
对于多个基表不支持动态 SQL 生成。


Tables("窗口1_Table1").Fill("Select  部门,姓名,密码,好友,{用户}.[_Identify],{用户}.[_Locked],{用户}.[_SortKey],{用户表}.[_Locked],{用户表}.[_SortKey],权限ID,用户名,{用户表}.[_Identify] F rom {用户} Inner JOIN {用户表} ON {用户表}.[用户名] = {用户}.[姓名]","test",False)

那是不是 只能这么写了

Tables("窗口1_Table1").Fill("Select  部门,姓名,密码,好友,{用户}.[_Identify],{用户}.[_Locked],{用户}.[_SortKey],{用户表}.[_Locked],{用户表}.[_SortKey],权限ID,用户名,{用户表}.[_Identify] F rom {用户} Inner JOIN {用户表} ON {用户表}.[用户名] = {用户}.[姓名]","test",true)

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/9/25 9:29:00 [只看该作者]

 只能用查询表。

 回到顶部
帅哥哟,离线,有人找我吗?
blsu33
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2928 积分:20184 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2017/9/25 9:45:00 [只看该作者]

datacolchanged 怎么写呢 都不会了
以下代码 都不行 ?

'Dim dt As DataTable=e.Form.Controls("Table1").DataTable
'MessageBox.Show(dt.name)


'MessageBox.Show(E.DataRow("_Identify"))

'If E.DataRow.RowState=DataRowState.Added Then
'MessageBox.Show(E.DataRow("_Identify"))
'End If

'Dim t As Table=Tables("窗口1_table1")
'Dim r As Row=T.Current
'MessageBox.Show(r("_Identify"))

[此贴子已经被作者于2017/9/25 9:45:27编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/9/25 9:51:00 [只看该作者]

DataColChanged事件直接判断列名。

 

比如有 表Aid、表A第一列、表A第二列、表Bid、表B第三列

 

你修改了【表A第一列】,那么就根据【表Aid】查找表A的行,如果找到,就直接改值;如果没找到,那就给表A新增一行。


 回到顶部
帅哥哟,离线,有人找我吗?
blsu33
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2928 积分:20184 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2017/9/25 10:16:00 [只看该作者]

 老师,
5楼的意思是怎么引用这个_Identify 列呢
Select Case E.DataRow.RowState
    Case DataRowState.Added
    Case DataRowState.Modified
        MessageBox.Show(E.DataRow("_Identify"))
    Case DataRowState.Unchanged
End Select

.NET Framework 版本:2.0.50727.3053
Foxtable 版本:2017.8.19.1
错误所在事件:表,窗口1_Table1,DataColChanged
详细错误信息:
调用的目标发生了异常。
列“_Identify”不属于表 窗口1_Table1。

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/9/25 10:19:00 [只看该作者]

 你fill的表里面,请把各个表的主键加进来,改一个别名,如

 

select {表A}.[_Identify] As 表AId, {表B}.[_Identify] As 表BId


 回到顶部
帅哥哟,离线,有人找我吗?
blsu33
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2928 积分:20184 威望:0 精华:0 注册:2012/2/3 17:45:00
  发帖心情 Post By:2017/9/25 11:43:00 [只看该作者]

老师
 看到效果了,把代码放到了保存按钮中,统一完成。
不知是否这样操作?
绿色部分的代码,是列名,但是,FT的类型不好判定,还要弄一个表来记录?

Dim flt As String
Dim drnames() As String={"部门","姓名","密码"}
Dim tb As Table =Tables("窗口1_Table1")
Select Case tb.Current.DataRow.RowState
    Case DataRowState.Added
    Case DataRowState.Modified
        Dim r As Row=tb.Current
        For Each drname As String In  drnames
            flt &=drname & "='" & r(drname) & "',"
        Next
        Dim cmd2 As New SQLCommand
        cmd2.C
        cmd2.CommandText ="UPDATE {用户} S ET " & flt.TrimEnd(",") & " where" & " [_Identify]=" & r("zbid")
        MessageBox.Show(cmd2.CommandText )
        cmd2.ExecuteNonQuery()
        tb.DataTable.Save()
    Case DataRowState.Unchanged
        e.Form.Close
End Select


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/9/25 11:51:00 [只看该作者]

1、sqlQuery表无法判断 rowState 的值的,你要多加一个辅助列,在datacolchanged事件标记是新增还是修改;

 

2、绿色的代码,没问题,不需要判断类型,sql语句任何类型的值都可以用单引号括起来。


 回到顶部
总数 24 1 2 3 下一页