delphi7求助一个最基础的问题,新小白

Augustine000 2019-03-14 09:07:20
stringgrid表格的数据如何保存到空的access数据库中,文档查了不少,就是没有对应的实例,好几天原地踏步了。至于stringgrid的cells数据提取赋值我还是知道的,但是怎么赋值给access数据库并保存呢?求求你们了,愁!
...全文
271 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyhoo163 2019-03-19
  • 打赏
  • 举报
回复
victor_yang 2019-03-19
  • 打赏
  • 举报
回复

恭喜楼主又进了一步
吹口哨的兔子 2019-03-15
  • 打赏
  • 举报
回复
自动肯定不行 只以循环插入呗
Augustine000 2019-03-15
  • 打赏
  • 举报
回复
感谢各位那么晚还帮忙,目前还有个问题,就是如何通过sql语句动态添加字段到access数据库?我是想在sql语句增加变量,然后for循环但是操作不了呢
victor_yang 2019-03-15
  • 打赏
  • 举报
回复
举个例子:
1、加adoconncetion,指向你的access
2、加adoquery,sql语句:select * from table1
3、写表格的语句


Query1.open;
for i:=0 to stringgrid1.RowCount -1 do
begin
Query1.Append;
for j:=0 to Stringgrid1. colCount-1 do
begin
query1.FieldbyName(字段1).value:=stringgrid1.cells[j,i];
end;
end;
query1.post; //如果是缓存更新的就是Query1.UpdateBatch();
Augustine000 2019-03-15
  • 打赏
  • 举报
回复
自己已经解决了,哈哈哈哈。真的高兴。贴出代码,实在麻烦各位大佬了。 var i: integer; s: string; begin with ADOquery1 do begin for i:= 0 to stringgrid1.colcount- 1 do begin close; sql.Clear; s:= format('alter table monthdata1 ADD %d INT',[i]); memo1.Lines.Add(s); sql.Add(s); Execsql; end; end; 经常提示的语法错误是因为生成的每条sql语句没有execsql,所以需要特别注意for循环语句的位置,而且如果是不同类型的值就不可以这样了。memo是测试显示用的,实际是用不到的。另外我将execsql语句放在for循环之外也是不行的,嘿嘿,写代码真好玩。 再次感谢各位的帮助,以后也少不了请教各位。
Augustine000 2019-03-15
  • 打赏
  • 举报
回复
不清楚你的具体需求,无法回答,关键是你要有表格名,要添加的字段名,写sql语句不难,字段名用参数传入[/quote] var i:integer; for i:=0 to 20 do //将1-20分别赋值给access数据库各列字段 begin pass end; 中间pass过程我是打算这也写的: adoquery.sql.add('insert table monthdata1 add i'); 但就是这一步不知道sql语句要怎么传变量才能通过for循环给数据库增加各字段名称,各字段都是整型。 我自己查的资料是sql语句不能传变量,要通过parameter方式,但具体操作就不知道了,就卡在这里了。
victor_yang 2019-03-15
  • 打赏
  • 举报
回复
引用 10 楼 Augustine000 的回复:
感谢各位那么晚还帮忙,目前还有个问题,就是如何通过sql语句动态添加字段到access数据库?我是想在sql语句增加变量,然后for循环但是操作不了呢

不清楚你的具体需求,无法回答,关键是你要有表格名,要添加的字段名,写sql语句不难,字段名用参数传入
doloopcn 2019-03-15
  • 打赏
  • 举报
回复
StringGrid1.RowCount:=qryAccess.RecordCount;

这一句应该改为:StringGrid1.RowCount:=qryAccess.RecordCount+1;
doloopcn 2019-03-15
  • 打赏
  • 举报
回复
其实数据表格就是最基本的两层FOR循环,不要整天想着偷懒

var
RowIndex,ColIndex:Integer;
begin
//Access表变成StringGrid
qryAccess.Open;
//设置StringGrid格式
StringGrid1.ColCount:=qryAccess.FieldCount;
StringGrid1.RowCount:=qryAccess.RecordCount;
StringGrid1.FixedCols:=0;
StringGrid1.FixedRows:=1;
//第零行为字段列表
for ColIndex:=0 to qryAccess.FieldCount-1 do
StringGrid1.Cols[ColIndex][0]:=qryAccess.Fields[ColIndex].FieldName;
//第一行开始为Access表数据
for RowIndex:=1 to StringGrid1.RowCount-1 do
for ColIndex:=0 to StringGrid1.ColCount-1 do
begin
qryAccess.RecNo:=RowIndex;
//qryAccess.FieldByName(StringGrid1.Cols[ColIndex][0]),为什么要用这一句?
//你在程序中改变了StringGrid列位置后并不影响与Access表字段的对应关系
StringGrid1.Cols[ColIndex][RowIndex]:=qryAccess.FieldByName(StringGrid1.Cols[ColIndex][0]).AsString;
end;
qryAccess.Close;
以上的代码演示怎么把ACCESS表中的数据生成StringGrid数据

要怎么保存到ACCESS表中?还想不出要真要打PP
lyhoo163 2019-03-14
  • 打赏
  • 举报
回复
字符的引用,是个基本功,要多看,多写。
woniugongzuoshi 2019-03-14
  • 打赏
  • 举报
回复
哈哈,你这样写语法当然错误了,应该这样,如果字段数据类型是字符要加引号就'''+stringgrid1.cells[1,0]+''',不加引号就‘+stringgrid1.cells[1,0]+’
@jydServer 2019-03-14
  • 打赏
  • 举报
回复
字段和值匹配吗?
sql.Add('insert into monthdata(对应的字段名) values(stringgrid1.cells[1,0])');
Augustine000 2019-03-14
  • 打赏
  • 举报
回复
本想通过sql的insert into语句添加,但是一直提示语法错误,这是代码 with ADOquery1 do begin close; sql.Clear; sql.Add('insert into monthdata values(stringgrid1.cells[1,0])'); end;
Augustine000 2019-03-14
  • 打赏
  • 举报
回复
引用 1 楼 jydserver1 的回复:
stringgrid?直接保存到access可能不行,需要自己写过程! dbgrid可以直接保存 先取值,然后连接数据库,然后写相应的SQL,执行,OK!
就是想知道通过什么语句怎么把数据赋值给access数据库。dbgrid方法最开始已经被我排除了。
@jydServer 2019-03-14
  • 打赏
  • 举报
回复
stringgrid?直接保存到access可能不行,需要自己写过程!
dbgrid可以直接保存
先取值,然后连接数据库,然后写相应的SQL,执行,OK!

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧