全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:941
推到 Plurk!
推到 Facebook!

我連續新增數筆資料時才會出現錯誤,不解?

答題得分者是:hagar
leo2568
中階會員


發表:54
回覆:124
積分:70
註冊:2003-09-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-11-20 18:11:57 IP:61.217.xxx.xxx 未訂閱
以下是我的部份程式碼,顯示時為什麼變成'-1',但是資料是有記錄的,請各位大大幫幫我,謝謝!!     
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
  var xxx : string;
begin
  xxx := IntTOstr(query1.RecNo);
  Label11.Caption :=xxx;    end;
 
發表人 -
leo2568
中階會員


發表:54
回覆:124
積分:70
註冊:2003-09-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-11-20 18:17:17 IP:61.217.xxx.xxx 未訂閱
對不起query1.RecordCount錯誤,重po,求請各位高手指點,謝謝  
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
  var xxx : string;
begin
  xxx := IntTOstr(query1.RecordCount);
  Label11.Caption :=xxx;    end;
 
huangeider
高階會員


發表:288
回覆:492
積分:231
註冊:2003-02-26

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-11-20 18:24:11 IP:61.231.xxx.xxx 未訂閱
以下是我的部份程式碼,顯示時為什麼變成'-1',但是資料是有記錄的,請各位大大幫幫我,謝謝!!     
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
  var xxx : string;
begin
  xxx := IntTOstr(query1.RecNo);
  Label11.Caption :=xxx;    end;
 
<> 經小弟測試以上程式並無錯誤 必須再> 「堅持」從洗馬桶做起
leo2568
中階會員


發表:54
回覆:124
積分:70
註冊:2003-09-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-11-20 18:37:50 IP:61.217.xxx.xxx 未訂閱
hi, huangeider,我把程式碼po上,請教為什麼會這樣呢?
 unit Unit1;    interface    uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, ADODB, DBTables, StdCtrls, DBCtrls, Mask, Buttons, Grids;    type
  TForm1 = class(TForm)
    Database1: TDatabase;
    UpdateSQL1: TUpdateSQL;
    BitBtnAppend: TBitBtn;
    BitBtnModify: TBitBtn;
    BitBtnDelete: TBitBtn;
    BitBtnYes: TBitBtn;
    BitBtnCancel: TBitBtn;
    BitBtnQuit: TBitBtn;
    BitBtnprior: TBitBtn;
    bitbtnNext: TBitBtn;
    Query1: TQuery;
    Query1REC_NO: TIntegerField;
    Query1ORDER_NO: TStringField;
    Query1GRADE: TStringField;
    Query1BATCH: TStringField;
    Query1VOLUME: TStringField;
    Query1DATE_1: TDateTimeField;
    Query1DATE_2: TDateTimeField;
    Query1DATE_3: TDateTimeField;
    Query1DATE_4: TDateTimeField;
    Query1ISCHANGE: TBooleanField;
    Query1SCRIP: TMemoField;
    Label1: TLabel;
    DBEdit1: TDBEdit;
    DataSource1: TDataSource;
    Label2: TLabel;
    DBEdit2: TDBEdit;
    Label3: TLabel;
    DBEdit3: TDBEdit;
    Label4: TLabel;
    DBEdit4: TDBEdit;
    Label5: TLabel;
    DBEdit5: TDBEdit;
    Label6: TLabel;
    DBEdit6: TDBEdit;
    Label7: TLabel;
    DBEdit7: TDBEdit;
    Label8: TLabel;
    DBEdit8: TDBEdit;
    Label9: TLabel;
    DBEdit9: TDBEdit;
    DBCheckBox1: TDBCheckBox;
    Label10: TLabel;
    DBMemo1: TDBMemo;
    Label11: TLabel;
    Label12: TLabel;
    procedure FormActivate(Sender: TObject);
    procedure BitBtnQuitClick(Sender: TObject);
    procedure BitBtnYesClick(Sender: TObject);
    procedure BitBtnAppendClick(Sender: TObject);
    procedure BitBtnCancelClick(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtnpriorClick(Sender: TObject);
    procedure BitBtnModifyClick(Sender: TObject);
    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;    var
  Form1: TForm1;
  emp_no : string;
implementation    {$R *.dfm}    procedure TForm1.FormActivate(Sender: TObject);
begin
  UpdateSql1.InsertSQL.Clear;
  UpdateSql1.InsertSQL.Add('INSERT INTO G_DATA1 ');
  UpdateSql1.InsertSQL.Add(' ( ORDER_NO, ');
  UpdateSql1.InsertSQL.Add(' GRADE , ');
  UpdateSql1.InsertSQL.Add(' BATCH , ');
  UpdateSql1.InsertSQL.Add(' VOLUME, ');
  UpdateSql1.InsertSQL.Add(' DATE_1, ');
  UpdateSql1.InsertSQL.Add(' DATE_2, ');
  UpdateSql1.InsertSQL.Add(' DATE_3, ');
  UpdateSql1.InsertSQL.Add(' DATE_4, ');
  UpdateSql1.InsertSQL.Add(' ISCHANGE, ');
  UpdateSql1.InsertSQL.Add(' SCRIP )');
  UpdateSql1.InsertSQL.Add(' VALUES ');
  UpdateSql1.InsertSQL.Add(' (:ORDER_NO,:GRADE,:BATCH,:VOLUME, ');
  UpdateSql1.InsertSQL.Add(' :DATE_1,:DATE_2,:DATE_3,:DATE_4, ');
  UpdateSql1.InsertSQL.Add(' :ISCHANGE,:SCRIP ) ');      UpdateSql1.ModifySQL.Clear;
  UpdateSql1.ModifySQL.Add('UPDATE G_DATA1 ');
  UpdateSql1.ModifySQL.Add('SET ');
  UpdateSql1.ModifySQL.Add('ORDER_NO = :ORDER_NO,');
  UpdateSql1.ModifySQL.Add('GRADE    = :GRADE   ,');
  UpdateSql1.ModifySQL.Add('BATCH    = :BATCH   ,');
  UpdateSql1.ModifySQL.Add('VOLUME   = :VOLUME  ,');
  UpdateSql1.ModifySQL.Add('DATE_1   = :DATE_1  ,');
  UpdateSql1.ModifySQL.Add('DATE_2   = :DATE_2  ,');
  UpdateSql1.ModifySQL.Add('DATE_3   = :DATE_3  ,');
  UpdateSql1.ModifySQL.Add('DATE_4   = :DATE_4  ,');
  UpdateSql1.ModifySQL.Add('SCRIP    = :SCRIP  ');
  UpdateSql1.ModifySQL.Add('WHERE ORDER_NO = :OLD_ORDER_NO');      UpdateSQL1.DeleteSQL.Clear;
  UpdateSql1.DeleteSQL.Add('DELETE FROM G_DATA1 ');
  UpdateSql1.DeleteSQL.Add('WHERE ORDER_NO = :OLD_ORDER_NO');      Query1.CachedUpdates := true;
  Query1.UpdateObject  := UpdateSql1;      Query1.SQL.Clear;
  Query1.SQL.Add('SELECT * FROM G_DATA1');
  Query1.Close;
  Query1.Open;
end;    procedure TForm1.BitBtnQuitClick(Sender: TObject);
begin
  DataBase1.Close;
  Query1.SQL.Clear;
  close;
end;    procedure TForm1.BitBtnYesClick(Sender: TObject);
begin
  Try
    DataBase1 .StartTransaction;
    Query1    .ApplyUpdates;
    Query1    .CommitUpdates;
    DataBase1 .Commit;
  Except
    DataBase1.Rollback;
    Query1.CancelUpdates;
    ShowMessage('存檔失敗 ');
  end;
end;    procedure TForm1.BitBtnAppendClick(Sender: TObject);    begin
  Query1.Append;
  Query1Date_1.Value  := date;
  Query1Date_2.Value  := date;
  Query1Date_3.Value  := date;
  Query1Date_4.Value  := date;
  Query1ischange.Value:= False;
  Emp_No := Query1.FieldByName('ORDER_NO').AsString;
  Dbedit2.SetFocus;
end;    procedure TForm1.BitBtnCancelClick(Sender: TObject);
begin
  Query1.Cancel;
end;    procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  Query1.Next;
end;    procedure TForm1.BitBtnpriorClick(Sender: TObject);
begin
  Query1.Prior;
end;    procedure TForm1.BitBtnModifyClick(Sender: TObject);
begin
  Query1.Edit;
  DBedit2.SetFocus;
end;    procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
  var xxx : string;
begin
  xxx := IntTOstr(query1.RecNo);
  Label11.Caption :=xxx;    end;    procedure TForm1.FormCreate(Sender: TObject);
begin    end;    end.
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-11-20 18:39:10 IP:202.39.xxx.xxx 未訂閱
RecNo 只在 Paradox/dbase 之類的有效 client/server 架構的不能用 --- Everything I say is a lie.
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-11-20 18:44:40 IP:63.84.xxx.xxx 未訂閱
您好﹗    請參考以下兩篇連接﹕ http://delphi.ktop.com.tw/topic.php?TOPIC_ID=29579 http://delphi.ktop.com.tw/topic.php?topic_id=37104    ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
leo2568
中階會員


發表:54
回覆:124
積分:70
註冊:2003-09-21

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-11-20 18:46:49 IP:61.217.xxx.xxx 未訂閱
hi,hanger, > RecNo 只在 Paradox/dbase 之類的有效 > client/server 架構的不能用 是不是連RecordCount也不行呢?如果想要知道資料庫總記錄筆數,還有其他指令可以使用? 謝謝!
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-11-20 19:13:03 IP:202.39.xxx.xxx 未訂閱
delphi help: Use RecordCount with care, because record counting can be a costly operation, especially for SQL queries that return large result sets. Generally, an application should only use RecordCount with Paradox and dBASE tables. 另一方式, 用 Select Count(*) From TableName 取得 --- Everything I say is a lie.
leo2568
中階會員


發表:54
回覆:124
積分:70
註冊:2003-09-21

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-11-20 21:39:31 IP:61.217.xxx.xxx 未訂閱
如上個程式碼,當連續新增記錄時會出會如下的ERROR,這是那裡錯誤呢?一直都修正不好,請各位大大幫忙,謝謝!! 發表人 - leo2568 於 2003/11/20 21:47:13
Miles
尊榮會員


發表:27
回覆:662
積分:622
註冊:2002-07-12

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-11-21 17:31:39 IP:218.160.xxx.xxx 未訂閱
Hello: 檢查一下輸入的資料是否有一個'造成組SQL字串時錯誤 我不是高手, 高手是正在銀幕前微笑的人.
------


我不是高手, 高手是正在銀幕前微笑的人.
leo2568
中階會員


發表:54
回覆:124
積分:70
註冊:2003-09-21

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-11-21 18:22:37 IP:202.145.xxx.xxx 未訂閱
Miles您好,不太懂您的意思,資料大都出現連新增6-7筆時即出現這個錯誤.還有可能是什麼錯誤造成這個現象?
Miles
尊榮會員


發表:27
回覆:662
積分:622
註冊:2002-07-12

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-11-23 14:03:53 IP:61.31.xxx.xxx 未訂閱
引言: Miles您好,不太懂您的意思,資料大都出現連新增6-7筆時即出現這個錯誤.還有可能是什麼錯誤造成這個現象?
Hi leo2568您好: 可以試著用try包起來, 並試著將你所送出去的SQL語法存檔出來看看. 我不是高手, 高手是正在銀幕前微笑的人.
------


我不是高手, 高手是正在銀幕前微笑的人.
leo2568
中階會員


發表:54
回覆:124
積分:70
註冊:2003-09-21

發送簡訊給我
#13 引用回覆 回覆 發表時間:2003-11-23 16:17:52 IP:61.217.xxx.xxx 未訂閱
引言:並試著將你所送出去的SQL語法存檔出來看看
Miles您好,我是新手不懂得怎麼做,能夠詳述用法嗎?謝謝! 發表人 - leo2568 於 2003/11/23 16:22:16
Miles
尊榮會員


發表:27
回覆:662
積分:622
註冊:2002-07-12

發送簡訊給我
#14 引用回覆 回覆 發表時間:2003-11-24 19:00:59 IP:218.160.xxx.xxx 未訂閱
Hello leo2568: 若是下SQL的方式可將你的SQL Save出來 Query1.SQL.SaveToFile('c:\SQL.txt'); 若你是單純使用Post方式可開SQL Monitor去觀察送出去的SQL語法 我不是高手, 高手是正在銀幕前微笑的人.
------


我不是高手, 高手是正在銀幕前微笑的人.
系統時間:2024-07-01 15:04:25
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!