请选择 进入手机版 | 继续访问电脑版

Lazarus中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

Lazarus IDE and 组件 下载地址版权申明
查看: 4898|回复: 1

sqlquery的问题

[复制链接]

该用户从未签到

发表于 2010-8-18 16:44:37 | 显示全部楼层 |阅读模式
测试
  SQLQuery2.SQL.Clear;
  SQLQuery2.SQL.Add('select max(ZYBH) as zybh from ZY');
  SQLQuery2.Open;
可以正确取出字段值,但如下代码,数据总是插入不了,请指教:
    sqlstr := 'insert into ZY (ZYBH,ZYMC) values ('
      + QuotedStr(EditYGBH.Text) + ',' + QuotedStr(EditYGMC.Text) + ')';  
    SQLQuery2.Close;
    SQLQuery2.SQL.Clear;
    SQLQuery2.Insert;
    SQLQuery2.InsertSQL.Text := sqlstr;
    SQLQuery2.ExecSQL;
用ShowMessage测试显示sqlstr 正确,但执行的时候,提示“ operation cnnnot be performed on an inactive dataset”
请教错在哪里?
另那位能给个sqlquery带参数插入的实例? 不胜感激
回复

使用道具 举报

该用户从未签到

发表于 2010-8-27 22:49:23 | 显示全部楼层
連結資料表方式
註 : AnsiToUtf8() 及  Utf8ToAnsi()  等轉碼函式定義在 LCLProc 單元中, 所以要先 uses  LCLProc  這個單元, 否則編譯器會不認得  AnsiToUtf8() 及  Utf8ToAnsi()  

[DBF]
procedure TForm1.FormCreate(Sender: TObject);
var My_Path:string;
begin
  My_Path:=ExtractFilePath(Application.ExeName);  //ExtractFilePath() 取回的是 ANSI, 要改為 UTF8
  
  Dbf1.TableName:=My_Path+'BX_ADAY.DBF';  //TDbf 的 TableName 要餵入 ANSI STRING
  Dbf1.Active:=true;
end;  

[SQLite]
使用 TSQLite3Connection 控件時還要同時加入 TSQLTransaction 及 TSQLQuery 兩個控件
procedure TForm1.FormCreate(Sender: TObject);
var My_Path:string;
begin
  //將 SQLTransaction1 及 SQLQuery1 兩個控件之 Database 指到 SQLite3Connection1
  SQLTransaction1.Database:=SQLite3Connection1;
  SQLQuery1.Database:=SQLite3Connection1;
  My_Path:=ExtractFilePath(Application.ExeName);  //ExtractFilePath() 取回的是 ANSI, 要改為 UTF8
  My_Path:=ansitoutf8(My_Path); //改為 UTF8
  SQLite3Connection1.DatabaseName:=My_Path+'myTest.db';  //指定一個 DATABASE

  SQLite3Connection1.Connected:=true;

  SQLQuery1.SQL.Clear;
  SQLQuery1.SQL.Add('select * from demo');  //指定一個 TABLE 名稱
  SQLQuery1.Active:=true;
end;

新增資料 (APPEND)
[DBF]
procedure TForm1.Button1Click(Sender: TObject);
begin
  Dbf1.Append();
  Dbf1.FieldByName('VAD_COMPAN').AsString:='1';
  Dbf1.FieldByName('VAD_TENANT').AsString:='中文1';
  Dbf1.Post;
  Dbf1.Append();
  Dbf1.FieldByName('VAD_COMPAN').AsString:='1';
  Dbf1.FieldByName('VAD_TENANT').AsString:='中文2';
  Dbf1.Post;
  Dbf1.Append();
  Dbf1.FieldByName('VAD_COMPAN').AsString:='1';
  Dbf1.FieldByName('VAD_TENANT').AsString:='中文3';
  Dbf1.Post;
  Dbf1.Append();
  Dbf1.FieldByName('VAD_COMPAN').AsString:='1';
  Dbf1.FieldByName('VAD_TENANT').AsString:='中文4';
  Dbf1.Post;
  Dbf1.Append();
  Dbf1.FieldByName('VAD_COMPAN').AsString:='1';
  Dbf1.FieldByName('VAD_TENANT').AsString:='中文5';
  Dbf1.Post;
end;         

[SQLite]
procedure TForm1.Button1Click(Sender: TObject);
begin

  //OPEN 中編輯的語法
  if not SQLTransaction1.Active then
  SQLTransaction1.StartTransaction;
  SQLQuery1.Append();
  SQLQuery1.FieldByName('uid').AsInteger:=1;
  SQLQuery1.FieldByName('uname').AsString:='中文測試';
  SQLQuery1.Post;
  SQLQuery1.Append();
  SQLQuery1.FieldByName('uid').AsInteger:=2;
  SQLQuery1.FieldByName('uname').AsString:='中文測試二';
  SQLQuery1.Post;
  SQLQuery1.ApplyUpdates;
  SQLTransaction1.CommitRetaining;

end;
回复 支持 反对

使用道具 举报

QQ|手机版|小黑屋|Lazarus中国|Lazarus中文社区 ( 鄂ICP备16006501号-1

GMT+8, 2021-5-9 06:08 , Processed in 0.055049 second(s), 24 queries .

Powered by Discuz! F1.0 Build 20160930

© 2001-2021 Comsenz Inc. & Discuz! Fans

快速回复 返回顶部 返回列表