用delphi做修改按钮的时候因为数据有空值 当数据为空时候不能修改报错显示错误类型的值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用delphi做修改按钮的时候因为数据有空值 当数据为空时候不能修改报错显示错误类型的值相关的知识,希望对你有一定的参考价值。

with ADOQuery1 do
//将修改后的学生数据提交给数据表student
begin
SQL.Clear;
sql.Text:='update student set 学号=:a,姓名=:b,高数=:c,操作系统=:d,大学英语=:e,金融学=:f,土木工程=:g,专业=:h where 学号='+edit1.Text+'';
parameters.ParamByName('a').Value:=edit1.Text;
parameters.ParamByName('b').Value:=edit2.Text;
parameters.ParamByName('c').Value:=edit3.Text;
parameters.ParamByName('d').Value:=edit4.Text;
parameters.ParamByName('e').Value:=edit5.Text;
parameters.ParamByName('f').Value:=edit6.Text;
parameters.ParamByName('g').Value:=edit7.Text;
parameters.ParamByName('h').Value:=edit8.Text;
ExecSQL;
请问下 这个直接在下面的赋值语句中修改怎么修改 或者有什么别的方法

数字是float学号是int

参考技术A 当数据为空时不能修改?

那你应该在拼接sql语句前就判断不能为空的字段。如果为空就提示用户输入。

如果有值 但是类型有问题的话,可以加上try catch,获取错误信息追问

我就是要有空值的输入 因为不同专业有的课程不涉及到的课值就为空 如果全部课程都输入在修改就没有问题

追答

那你的这种表设计就不合理啊 。
你直接做一个科目表、一个成绩表
成绩表 就3个字段 学号,科目,成绩
如果这个学生有10个科目
那么成绩表中就存10条数据。
当然 你的设计也可以
但是如果你这样设计的话 如果这个学生只有 高数,英语 没有 金融, 那你金融直接存空值。

追问

是的 但是修改的时候 哪个科目有是空值然后对应的那条语句就出错
if trim(edit5.Text)='' then
parameters.ParamByName('e').Value:=varnull
else
parameters.ParamByName('e').Value:=edit5.Text;修改成这样后会自动给空值的项赋值为1

追答

varnull
这啥东西????

参考技术B 检查一下你的数据库是否将这些字段设置成了必填字段。如果设置成了必填字段则修改数据库,将这些字段的属性改为可以为空。 参考技术C if edit1.Text<>'' then
parameters.ParamByName('a').Value:=edit1.Text;

另外还得修改,字段的属性,为可以为空,数字字段,不屑修改,它身已经被0填充.本回答被提问者和网友采纳
参考技术D 用try语句追问

前面有try没复制下来

bat如何解决文件名里有空格

最近给一件歌曲编号,朋友说可以用ren来搞。试了一下果然不错 但文件名中有空格的却无法识别。比如英文歌曲。 ren a b.mp3 001a b.mp3. ab这之间有个空格。谢谢

批量去除文件名中的空格:

步骤1,安装并打开下图软件工具,点击软件左上角的【添加文件】蓝色按钮,将需要修改名称的文件批量添加到软件中。


步骤2,这时候在左边可以看到设置窗口,命名方式选择“替换”;在查找内容右边的方框内输入一个空格。其他都不用设置了,这时候在右边可以预览到新文件名中已经没有了空格。


步骤3,确认无误后就点击右上角的【开始重命名】按钮,启动软件程序,当弹出“重命名成功”的提示框说明批量处理完成了。


步骤4,打开查看处理后的文件可以看到,所有文件名中已经没有了空格。

参考技术A @echo off
color f2
echo 我可以将【文件夹】目录及子目录[去除文件名空格]整理到-目录表格.xls
pause 
:--------------------------------------
setlocal enabledelayedexpansion
:--------------------------------------
for /f "tokens=*" %%j in ('dir/b') do (
set fn=%%j
echo 替换前:!fn!
set fn=!fn: =!
echo 替换后:!fn!
:将fn字符串中的每一个空格(" ")替换成空字符("")。
ren "%%j" !fn!
)
:--------------------------------------
set pp=%~dp0
echo %pp%
:--------------------------------------
for /d /r . %%i in (*) do (

:更新路径,将有空格的路径改为除去空格后的路径,才能进入
for /f "tokens=*" %%l in (!i!) do (
set pt=%%l
set pt=!pt: =!
set i=!pt!
)
echo 路径 %%i
cd %%i
:-------------------
for /f "tokens=*" %%j in ('dir/b') do (
set fn=%%j
echo !fn!
set fn=!fn: =!
echo !fn!
:将fn字符串中的每一个“ ”替换成“”空字符。
ren "%%j" !fn!
)
)
:--------------------------------------
cd %pp%
echo %pp%
for /d /r . %%k in (*) do echo %%k>>目录表格.xls
echo 已经将文件夹目录(不包括文件)生成到【目录表格.xls】
echo 如果希望更多bat功能可以发邮件给:973490770@qq.com
pause

参考技术B 有空格的在文件名前后添加英文的双引号即可,例如:
ren “a b.mp3” “001a b.mp3”本回答被提问者采纳

以上是关于用delphi做修改按钮的时候因为数据有空值 当数据为空时候不能修改报错显示错误类型的值的主要内容,如果未能解决你的问题,请参考以下文章

delphi 多线程 loading界面

delphi中的dbgrid数据操作

Delphi 移动开发,如何将文件打包到程序中

PHP点击浏览器关闭按钮时候,怎么清除session值

DELPHI 点击按扭显示HINT 怎么做?

如果路径中有空格,ShellExecute 失败