初级问题,高分求解

时间:2021-03-11 10:28:57
这应该是一个初级的问题:
表有二十几个字段,其中一个是日期字段,在窗体分别用text,dtpiker等控件通过DATASOURCD和DATAFIELD绑定到所有字段,通过RS.UPDATA来更新修改,但是总是无法更新成功,提示:-2147217888:客户事件句柄调用了一个提供程序中的非重入方法.经多次测试,发现是日期格式的这个字段的问题,dtpiker的值无法更新到access中的日期字段中。
我已经在ACCESS中将这个字段设成短日期格式,在控件格式上也设置为短日期格式,怎么,但是还是老样子,请问我要怎么写才能通过?
难道非要写CMD.COMMANDTEXT=一大堆的&&&?我可是有二十几个字段,还有其他的一些表都是十几二十个字段,每次都写sql的&&&?
**************************************************
能不能麻烦大家多打几个字啊?哭ing,在数据库版发了一周,只有一个回复,还只有几个字:“设置有问题”,说句不好听的,这不是废话吗?这叫啥回答啊?

16 个解决方案

#1


使用自定义格式
yy-mm-dd
这样的自定义格式。

#2


在哪里改成这种格式?dtpiker控件上?不行,照旧出现-2147217888的错误

#3


update 的时候 convert(char(10),'2006-11-11 10:25:32',120)
转化一下看看

#4


楼主可以把你dtpiker赋值的sql语句写出来吗?

#5


Private Sub Form_Load()'载入窗体
    rS.Open "分店", cN, adOpenKeyset, adLockOptimistic
    If rS.EOF Then
        rS.AddNew
        rS.Fields(2).Value = Date
        rS.Fields(3).Value = Date
    End If
    
    Set DTP1.DataSource = rS
    Set DTP2.DataSource = rS
    DTP1.DataField = rS.Fields(2).Name
    DTP2.DataField = rS.Fields(3).Name
    
    For i = 0 To 21
        If i <> 2 And i <> 3 Then Set Text1(i).DataSource = rS
    Next i
    For i = 0 To 21
        If i <> 2 And i <> 3 Then Text1(i).DataField = rS.Fields(i).Name
    Next i
End Sub
***************************
Private Sub Command1_Click()'保存按钮按下事件
    Dim sqlStr As String
    
    On Error GoTo errxxx
    
    If Len(Text1(0).Text) <> 5 Then
        MsgBox "分店代码只能为5位数字"
        Exit Sub
    End If
    
    rS.Update
    
    Exit Sub

errxxx:
    MsgBox Err & ":" & Err.Description

End Sub

第一个是frmload的事件,如果为空就新增一行,如果不空就直接绑定,后面是各个控件绑定到各个字段
第二个是窗体上的保存按钮按下时,保存记录,其他的记录都可以保存,只有这两个日期保存不了

我是一个新手,对VB的很多细节不是很了解,不过我知道可以用SQL写cmd.commandtext来执行sql语句更新,我尝试着写了一下,好象很麻烦,很吃力,而且很容易出错,我不想通过那样来实行,我想直接通过这个rs.updata就实现所有的更新

#6


现在其他的字段和TEXT绑定都很良好,可以实现修改,保存,更新的操做,只是这几个日期型的不行,我删掉这两个日期控件就没问题

#7


dtpicker里面有一个属性CustomFormat。你试试看在这里改成你要的格式。不知道是否可行

#8


设置customformat也不行啊,我设置成yyyy-mm-dd和yy-mm-dd都不行

#9


啊!!!!!!!!
我快疯了,这应该是一个初级的问题吧?怎么还没人帮我解答一下啊,哭死了。。。
大家做的数据库中都没有日期型的数据吗?有的话那都是如何更新的呢?

#10


你设置后dtpicker如何显示呢?你要设置customformat的同时还要设置format属性呢

我做数据库从来不用datafield绑定,万一网络连接出问题了,还是错误。我都是单写一个函数添加或者更新的

#11


楼主 应该是yyyy-MM-dd
记住大写MM

#12


楼上讲的设置customformat同时设置format是不是指 dataformat?
如果是这个的话我也设置了
另外我这个是单机程序,只是做一个方便自己使用的小程序,不存在网络连接出问题的情况
还有你的单写一个函数来更新是用什么语句来更新的?是用adobd.command 的SQL语句来实现?

#13


whu305:
我改成yyyy-MM-dd了,还是提示:-2147217888:客户事件句柄调用了一个提供程序中的非重入方法

TMD,这个错误提示到底是什么意思呢?

#14


不是有个属性就叫format么,我想知道你设置后你的dtpicker怎么显示的

就用普通的sql, 
sql="update...."
或者recordset
rs.addnew
rs.update

就是这样的

#15


你定义一个时间变量,然后先把dtpicker的值赋给变量再UPDATE应该就可以了

#16


唉,暂时解决了,虽然最后的方法不是我想象中的理想办法,不过能实现程序正常执行了

想象中还是dtpicker控件直接绑定到字段的好,不过最后还是没有绑定,单用update语句来写这两个日期字段的

算了,结贴了

#1


使用自定义格式
yy-mm-dd
这样的自定义格式。

#2


在哪里改成这种格式?dtpiker控件上?不行,照旧出现-2147217888的错误

#3


update 的时候 convert(char(10),'2006-11-11 10:25:32',120)
转化一下看看

#4


楼主可以把你dtpiker赋值的sql语句写出来吗?

#5


Private Sub Form_Load()'载入窗体
    rS.Open "分店", cN, adOpenKeyset, adLockOptimistic
    If rS.EOF Then
        rS.AddNew
        rS.Fields(2).Value = Date
        rS.Fields(3).Value = Date
    End If
    
    Set DTP1.DataSource = rS
    Set DTP2.DataSource = rS
    DTP1.DataField = rS.Fields(2).Name
    DTP2.DataField = rS.Fields(3).Name
    
    For i = 0 To 21
        If i <> 2 And i <> 3 Then Set Text1(i).DataSource = rS
    Next i
    For i = 0 To 21
        If i <> 2 And i <> 3 Then Text1(i).DataField = rS.Fields(i).Name
    Next i
End Sub
***************************
Private Sub Command1_Click()'保存按钮按下事件
    Dim sqlStr As String
    
    On Error GoTo errxxx
    
    If Len(Text1(0).Text) <> 5 Then
        MsgBox "分店代码只能为5位数字"
        Exit Sub
    End If
    
    rS.Update
    
    Exit Sub

errxxx:
    MsgBox Err & ":" & Err.Description

End Sub

第一个是frmload的事件,如果为空就新增一行,如果不空就直接绑定,后面是各个控件绑定到各个字段
第二个是窗体上的保存按钮按下时,保存记录,其他的记录都可以保存,只有这两个日期保存不了

我是一个新手,对VB的很多细节不是很了解,不过我知道可以用SQL写cmd.commandtext来执行sql语句更新,我尝试着写了一下,好象很麻烦,很吃力,而且很容易出错,我不想通过那样来实行,我想直接通过这个rs.updata就实现所有的更新

#6


现在其他的字段和TEXT绑定都很良好,可以实现修改,保存,更新的操做,只是这几个日期型的不行,我删掉这两个日期控件就没问题

#7


dtpicker里面有一个属性CustomFormat。你试试看在这里改成你要的格式。不知道是否可行

#8


设置customformat也不行啊,我设置成yyyy-mm-dd和yy-mm-dd都不行

#9


啊!!!!!!!!
我快疯了,这应该是一个初级的问题吧?怎么还没人帮我解答一下啊,哭死了。。。
大家做的数据库中都没有日期型的数据吗?有的话那都是如何更新的呢?

#10


你设置后dtpicker如何显示呢?你要设置customformat的同时还要设置format属性呢

我做数据库从来不用datafield绑定,万一网络连接出问题了,还是错误。我都是单写一个函数添加或者更新的

#11


楼主 应该是yyyy-MM-dd
记住大写MM

#12


楼上讲的设置customformat同时设置format是不是指 dataformat?
如果是这个的话我也设置了
另外我这个是单机程序,只是做一个方便自己使用的小程序,不存在网络连接出问题的情况
还有你的单写一个函数来更新是用什么语句来更新的?是用adobd.command 的SQL语句来实现?

#13


whu305:
我改成yyyy-MM-dd了,还是提示:-2147217888:客户事件句柄调用了一个提供程序中的非重入方法

TMD,这个错误提示到底是什么意思呢?

#14


不是有个属性就叫format么,我想知道你设置后你的dtpicker怎么显示的

就用普通的sql, 
sql="update...."
或者recordset
rs.addnew
rs.update

就是这样的

#15


你定义一个时间变量,然后先把dtpicker的值赋给变量再UPDATE应该就可以了

#16


唉,暂时解决了,虽然最后的方法不是我想象中的理想办法,不过能实现程序正常执行了

想象中还是dtpicker控件直接绑定到字段的好,不过最后还是没有绑定,单用update语句来写这两个日期字段的

算了,结贴了