我有3个edit、一个dbgrid,我想第一个edit输入自己的内容,但是要9位,第一位要是字母,其他8位是数字,
第二个edit中的内容要自动从数据表中选出来,从以第一个edit内容为主健值的数据表中。
第三个edit要自动显示系统的时间,之后这三个edit的内容输入到dbgrid中,解决者给200分,
第二个edit中的内容要自动从数据表中选出来,从以第一个edit内容为主健值的数据表中。
第三个edit要自动显示系统的时间,之后这三个edit的内容输入到dbgrid中,解决者给200分,
if length(trim(edit1.text))=1 then
begin
if not ((key>='a') and (key<='z')) or ((key>='A') and (key<='Z')) then
key=#0;
end
else
begin
if not (key>='0') and (key<='9') then
key:=#0;
end;
第二个edit
query1.close;
query1.sql.clear;
query1.sql.add('select fieldname from tablename where key='+trim(edit1.text));
query1.open;
if query1.eof<>query1.bof then//判断结果集是否为控
edit2.text:=query1.fields[0].asstring;
query1.close;
第三个edit
edit3.text:=datetimetostr(now);
怎么给我200分阿?呵呵!
最后
query1.close;
query1.sql.clear;
query1.sql.add('insert into tablename (fieldname1,fieldname2,fieldname3)
values (edit1.text,edit2.text,edit3.text)');
query1.execsql;或者
table1.tablename:=tablename//你要写的表
table1.fieldbyname('fieldname1').asstring:=edit1.text;
table1.fieldbyname('fieldname2').asstring:=edit2.text;
table1.fieldbyname('fieldname3').asstring:=edit3.text;
table1.post;
都可以
dbgrid.datasource.dataset.locate('fieldname1',vararray(edit1.text),[]);
edit2.text:=dbgrid.datasource.dataset.fieldbyname('fieldname2').asstring;
dbgrid.datasource.dataset.fieldbyname('fieldname3').asstring:=edit3.text;
再有我的第一个edit输入的内容必须是以经存在的一个数据表中的一个字段的内容,如果不存在也应该给提示说不存在,怎么解决???? 请帮帮忙!!!谢谢了,
我会多给分的,
edit1.keypress事件中判断如果长度超过9就不处理
if length(edit1.text)>9 then
key:=#0;
第二个问题可以这么解决
当输入完9个字符的时候到数据库中去查询locate函数是一个可以返回true/false的,可以判断返回值来确定是不是存在,不过locate函数使用上要注意必须存在主键,而且当数据库存在一些小的问题的时候会报出access violation的错,要注意!