以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  SQL语句问题  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=15209)

--  作者:huntkey
--  发布时间:2011/12/15 22:07:00
--  SQL语句问题

Dim J As Double=e.Form.controls("textbox4").text   \'原始金额
Dim Z As String =e.Form.controls("combobox1").text    \'状态

Dim T As Date=Date.now()   \'保存当前日期

Dim cmd As new sqlcommand
cmd.c

cmd.commandtext="insert into {Card_Set} ([新增时间],[原始金额],[状态]) values(\'"& T &"\', \'"& J &"\',\'"& Z &"\')"
cmd.ExecuteReader()
运行提示如下错误,应改是SQL表达式书写错误造成的,但是我试了很多种写法仍未成功,请高手指点一下:

 


图片点击可在新窗口打开查看此主题相关图片如下:snap1.jpg
图片点击可在新窗口打开查看

--  作者:huntkey
--  发布时间:2011/12/15 22:14:00
--  
补充一下,我用的是Access数据库
--  作者:mr725
--  发布时间:2011/12/16 0:08:00
--  

Dim J As Double = CDbl(e.Form.controls("textbox4").text ) 

....

 

="insert into {Card_Set} ([新增时间],[原始金额],[状态]) values( T  &  ", " &  J  & ", " & "" & Z & "")"

[此贴子已经被作者于2011-12-16 0:11:21编辑过]

--  作者:lihe60
--  发布时间:2011/12/16 8:02:00
--  

ACC和SQL代码唯一的区别是不是变量为日期型的表达式。


--  作者:huntkey
--  发布时间:2011/12/16 21:04:00
--  

Dim J As Double = CDbl(e.Form.controls("textbox4").text ) 

 

cmd.commandtext="insert into {Card_Set} ([新增时间],[原始金额],[状态]) values(#"& T &"#, \'"& J &"\',\'"& Z &"\')"
时间类型对了,但是Double类型还是没调对

mr725你的代码是乱得,能写清楚一下吗?


--  作者:huntkey
--  发布时间:2011/12/16 22:30:00
--  WinForm.Form内能不能添加另一个WinForm.Form
狐爸,帮我解决一下嘛,我都两天没找到原因了,查了很多资料都没辙,郁闷啊
--  作者:yangming
--  发布时间:2011/12/17 1:25:00
--  

Dim J As Double=e.Form.controls("textbox4").text

 

改成:下面这样试试呢

 

Dim J As Double=e.Form.controls("textbox4").Value

 

我测试过了,就是这个问题,我现在基本上很少用text了,只有文本才用,如果其它的类型我一律用Value,因为他表示值,而text表示字符

[此贴子已经被作者于2011-12-17 1:49:32编辑过]

--  作者:狐狸爸爸
--  发布时间:2011/12/17 9:36:00
--  

除了杨版主说的:

 

Dim J As Double=e.Form.controls("textbox4").text \'原始金额

 

应该改为:

 

Dim J As Double=e.Form.controls("textbox4").Value \'原始金额

 

还要注意列类型,逻辑和不需要单引号,字符需要单引号,日期要用#括起来,如果是SQL Server,日期也用单引号。

假定新增时间是日期型,原是金额是数值,状态时字符,对于Access数据源:

 

cmd.commandtext="insert into {Card_Set} ([新增时间],[原始金额],[状态]) values(#" & T & "#, " & J & ", \'" & Z & "\')"

 

如果是SQL SQLServer:

 

cmd.commandtext="insert into {Card_Set} ([新增时间],[原始金额],[状态]) values(\'" & T & "\', " & J & ", \'" & Z & "\')"

 

不管是代码还是表达式,数据类型是一切的基础。

 

建议看看:

http://www.foxtable.com/help/topics/1580.htm

http://www.foxtable.com/help/topics/1284.htm

 

 

[此贴子已经被作者于2011-12-17 9:39:09编辑过]

--  作者:huntkey
--  发布时间:2011/12/17 15:18:00
--  

问题解决了,谢谢各位!

我的代码还犯了一个错误,所以一直通不过

如下:

Dim J As Double=e.Form.controls("textbox4").Value \'原始金额

我的一个判断语句写错了 if j="" ……

我把它改成e.Form.controls("textbox4").text=“” 就通过了

 

狐爸说的:

不管是代码还是表达式,数据类型是一切的基础。

 

真是金玉良言啊!


--  作者:yangming
--  发布时间:2011/12/17 16:21:00
--  
以下是引用huntkey在2011-12-17 15:18:00的发言:

问题解决了,谢谢各位!

我的代码还犯了一个错误,所以一直通不过

如下:

Dim J As Double=e.Form.controls("textbox4").Value \'原始金额

我的一个判断语句写错了 if j="" ……

我把它改成e.Form.controls("textbox4").text=“” 就通过了

 

狐爸说的:

不管是代码还是表达式,数据类型是一切的基础。

 

真是金玉良言啊!

你上面的代码中没看到这句"if j="" ……",我发现你还有个错误,上面定义时是大写的 J ,下面的判断中是小写的 j,  如果两外不符,我想代码也是通不过的,呵呵,所以说,,如果希望尽快的解决问题,一是贴全代码,二是上传相关的文件