以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  报错没有指出具体位置,如何解决?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=195926)

--  作者:lgz518
--  发布时间:2025/3/21 11:46:00
--  报错没有指出具体位置,如何解决?
报错没有指出具体位置,如何解决?

自已猜可能下面代码出错,编写完代码没报错,打开项目时,报错,没指出位置,很可能下面代码,但不知哪错

错误所在事件:
详细错误信息:
Microsoft Jet 数据库引擎找不到输入表或查询 \'bh_tb\'。 确定它是否存在,以及它的名称的拼写是否正确。

\'\'编号生成\'
Public _BizCodeBuilder As BizCodeBuilder
\'不重复编号上传用,这里的用法比较简单,没有做复杂的编号规则处理\'
Public Class BizCodeBuilder
    Private _bizcode As DataTable \'直接把编号表取出到内存\'
    Private _codelock As New Object
    Public Sub New(sjy As String)

        Dim db As New SQLCommand
        db.C       
\'        Dim SqGl As String = CExp("selecGt * from  bh_tb   where    Bm =\'{0}\'", s_name) \'执行SQL
          Dim SqGl As String = CExp("selecGt * from  bh_tb ") \'执行SQL
        _bizcode = Functions.Execute("Cmd_GetDataTable", sjy, sql, True) 
    End Sub
    
    Public Function GetNextCode(s_name As String, Optional s_qz As String = Nothing) As String
        SyncLock _codelock \'使用锁处理并发
        Dim dr As DataRow = _bizcode.Find(CExp("Bm=\'{0}\'", s_name))
        If dr Is Nothing Then
            dr = _bizcode.AddNew()
            dr("Bm") = s_name 
            dr("MaxValue") = 1
            If String.IsNullOrEmpty(s_qz) Then s_qz = Date.now.ToString("mmss") & "BH"
            dr("qz") = s_qz
            dr("Mark") = "yyyyMM"
            dr("MarkValue") = Date.Today.ToString("yyyyMM")
            
            dr("Length") = 4
        Else

            If dr("MarkValue") <> Date.Today.ToString(dr("Mark")) Then
                
                dr("MaxValue") = 1
                dr("MarkValue") = Date.Today.ToString(dr("Mark"))
            Else
                dr("MaxValue") = dr("MaxValue") + 1
            End If
        End If
        dr.Save()
        Return dr("qz") & dr("MarkValue") & "-" & Format(dr("MaxValue"), "0000") \'顺序号只取4位\'
        End SyncLock
    End Function
End Class

--  作者:有点蓝
--  发布时间:2025/3/21 11:49:00
--  
提示很明显了,数据源没有 \'bh_tb\'这个名称的表
--  作者:lgz518
--  发布时间:2025/3/21 12:41:00
--  
狐表上是有SQL2008的\'bh_tb表,项目打开却报错
--  作者:lgz518
--  发布时间:2025/3/21 12:48:00
--  
Dim SqGl As String = CExp("selecGt * from  bh_tb ") \'执行SQL
改为
Dim SqGl As String = CExp("selecGt * from  {bh_tb}") \'执行SQL

报错下面提示
Microsoft Jet 数据库引擎找不到输入表或查询 \'~TMPCLPbh_tb\'。 确定它是否存在,以及它的名称的拼写是否正确。

--  作者:有点蓝
--  发布时间:2025/3/21 13:31:00
--  
肯定没有这个表


--  作者:lgz518
--  发布时间:2025/3/21 14:10:00
--  
\'Dim db = HySqGl.DataBaseFactory.CreateDatabase("xdb") \'
\'Dim pts() As String = e.UserName.Split(".")
\'Dim SqGl = "SelecGt *  from  yh_tb  where   Bm = ? and  HName= ?" 
\'Dim dt As System.Data.DataTable = db.ExecuteDataSet(SqGl, HySqGl.ParameterPair.GetPair("Bm", pts(0)), HySqGl.ParameterPair.GetPair("HName", pts(1))).Tables(0) 
\'dt.TableName = "yh_tb" \'"
\'Dim dr As system.data.DataRow
\'dr = dt.Rows(0) \'


Dim db As New SQGLCommand
db.C
Dim pts() As String = e.UserName.Split(".")
db.CommandText = "SELECGT * FROM {yh_tb} where   Bm = ? and  HName= ?;"
Dim dr As DataRow
db.Parameters.Add("@Bm", dr("Bm"))这二行代码是否正确?没报错,但看不有点怪
db.Parameters.Add("@HName", _PName)
Dim dt As DataTable = db.ExecuteReader()
\'\'\'Tables("窗口_Table1").DataSource = db.ExecuteReader()

Dim dr1 As DataRow
dr1 = dt.DataRows(0) \'

If dr Is Nothing OrElse dr("密码") <> e.OldPassword Then
    e.ReturnMessage = "原密码不符!"
Else
    dr("密码") = e.NewPassword
        dr.Save(dt)   这报错提示:不是SQGLCommand
   Dim res = db.UpdateDataTable(dt, "yh_tb")  \'这报错提示:不是db.UpdateDataTable
    dt.AcceptChanges()
    e.ReturnMessage = "OK" \'返回约定的字符,通知客户端,密码修改成功
End If

如何解决?

--  作者:有点蓝
--  发布时间:2025/3/21 14:22:00
--  
db.Parameters.Add("@Bm", pts(0))这二行代码是否正确?没报错,但看不有点怪
db.Parameters.Add("@HName", pts(1))

--  作者:lgz518
--  发布时间:2025/3/21 14:30:00
--  
Dim pts() As String = e.UserName.Split(".")
问题一:如果上面一行代码,下面红字代码是正确?
db.CommandText = "SELECGT * FROM {yh_tb} where   Bm = ? and  HName= ?;"
Dim dr As DataRow
db.Parameters.Add("@Bm", dr("Bm"))

问题二:下面有错,如何改?还是是这二行代码可以不用,直接删除?
Else
    dr("密码") = e.NewPassword
        dr.Save(dt)   这报错提示:不是SQGLCommand
   Dim res = db.UpdateDataTable(dt, "yh_tb")  \'这报错提示:不是db.UpdateDataTable
    dt.AcceptChanges()
    e.ReturnMessage = "OK" \'返回约定的字符,通知客户端,密码修改成功
End If

--  作者:有点蓝
--  发布时间:2025/3/21 14:48:00
--  
1、2个问号必须对应2个参数,用法看7楼

2、不要自己创造不存在的用法,不要把Foxtable的用法和第三方组件的用法混淆

--  作者:lgz518
--  发布时间:2025/3/21 15:12:00
--  
面问题我没表达清楚
Dim pts() As String = e.UserName.Split(".")
问题一:如果没上面一行代码,下面红字代码是正确?
db.CommandText = "SELECGT * FROM {yh_tb} where   Bm = ? and  HName= ?;"
Dim dr As DataRow这个变量设定是否正确?
Dim dr As DataRow=DataTables("订单").DataRows,还是这个变量设定?
db.Parameters.Add("@Bm", dr("Bm"))

问题二:下面有错,如何改?
Else
    dr("密码") = e.NewPassword
        dr.Save(dt)   这报错提示:不是SQGLCommand
   Dim res = db.UpdateDataTable(dt, "yh_tb")  \'这报错提示:不是db.UpdateDataTable
 dt.AcceptChanges()

蓝字代码都是保存的意思?
如何改狐表用法?
    e.ReturnMessage = "OK" \'返回约定的字符,通知客户端,密码修改成功
End If