線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1155
推到 Plurk!
推到 Facebook!

RecordSet 的問題

尚未結案
SuperLowB
初階會員


發表:96
回覆:77
積分:34
註冊:2003-06-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-09-18 14:58:48 IP:203.198.xxx.xxx 未訂閱
請問我想當我按button1的時侯,能夠自動傳回一個recordset給我, 我試過以下的寫法,但不能做到,次次都話我"Access violation..... " 應怎樣做?
procedure TForm1.Button1Click(Sender: TObject);
var qry:TADODataSet;
begin
  with DataModule1 do
  begin
    try
      try
        qry:=TADODataSet.Create(nil);
        qry:=GetRecSet('Select * from Table1',Conn1);
        qry.Open;
        if not qry.Eof then
        begin
          Showmessag(lqry.FieldByName('ProviderName').AsString);
        end;
      except
        raise;
      end;
    finally
      qry.close; qry.free;
    end;
  end;
end;    function TDataModule.GetRecSet(SQL:String;DBCon:TADOConnection):TADODataSet;
var Qry:TADODataSet;
begin
  try
    try
      Qry:=TADODataSet.Create(nil);
      Qry.Connection:=DBCon;
      Qry.CommandText:=SQL; Qry.Open;
      Qry.Clone(result);
    except
      raise;
    end;
  finally
    Qry.Close; Qry.Free; Qry:=nil;
  end;
end;
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-09-19 09:25:16 IP:147.8.xxx.xxx 未訂閱
procedure TForm1.Button1Click(Sender: TObject);
var qry:TADODataSet;
begin
  with DataModule1 do
  begin
    try
      try
        qry:=TADODataSet.Create(nil);
        qry:=GetRecSet('Select * from Table1',Conn1);
        { better check if qry=nil somewhere... }
        qry.Open;
        if not qry.Eof then
        begin
          Showmessag(lqry.FieldByName('ProviderName').AsString);
        end;
        qry.Close;
      except
        raise;
      end;
    finally
      qry.close; qry.free;
    end;
  end;
end;    function TDataModule.GetRecSet(SQL:String;DBCon:TADOConnection):TADODataSet;
var Qry:TADODataSet;
begin
  try
    Result := nil;
    try
      Qry:=TADODataSet.Create(nil);
      Qry.Connection:=DBCon;
      Qry.CommandText:=SQL; Qry.Open;
      Qry.Clone(result);
      Result := Qry;
    except
      FreeAndNil(qry);
      raise;
    end;
  finally
    Qry.Close; Qry.Free; Qry:=nil;
  end;
end;
SuperLowB
初階會員


發表:96
回覆:77
積分:34
註冊:2003-06-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-09-19 15:37:17 IP:203.198.xxx.xxx 未訂閱
引言:
1 procedure TForm1.Button1Click(Sender: TObject);
2 var qry:TADODataSet;
3 begin
4  with DataModule1 do
5  begin
6    try
7      try
8        qry:=TADODataSet.Create(nil);
9        qry:=GetRecSet('Select * from Table1',Conn1);
10        { better check if qry=nil somewhere... }
11        qry.Open;
12        if not qry.Eof then
13       begin
14          Showmessag(lqry.FieldByName('ProviderName').AsString);
15        end;
16        qry.Close;
17      except
18        raise;
19      end;
20    finally
21      qry.close; qry.free;
22    end;
23  end;
24end;    25 function TDataModule.GetRecSet(SQL:String;DBCon:TADOConnection):TADODataSet;
var Qry:TADODataSet;
26 begin
27   try
28    Result := nil;
29    try
30      Qry:=TADODataSet.Create(nil);
31      Qry.Connection:=DBCon;
32      Qry.CommandText:=SQL; Qry.Open;
33      Qry.Clone(result);
34      Result := Qry;
35    except
36      FreeAndNil(qry);
37      raise;
38    end;
39  finally
40    Qry.Close; Qry.Free; Qry:=nil;
41 end;
42 end;
William 兄,都不能......都是出果句'Access violation....' 在25行,你刪除了var Qry:TADODataSet,咁就會有問題 我想這個問題應該是memory allocation的問題 應怎樣解決?
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-09-19 16:42:53 IP:147.8.xxx.xxx 未訂閱
引言: William 兄,都不能......都是出果句'Access violation....' 在25行,你刪除了var Qry:TADODataSet,咁就會有問題
Oh... it should not be deleted
SuperLowB
初階會員


發表:96
回覆:77
積分:34
註冊:2003-06-11

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-09-22 12:13:43 IP:203.198.xxx.xxx 未訂閱
我意思是說,delete了都不能 run,你試過了沒有? 可行嗎?
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-09-22 13:16:35 IP:147.8.xxx.xxx 未訂閱
With all those extra strokes removed:    
procedure TForm1.Button1Click(Sender: TObject);
var
  qry:TADODataSet;
begin
  with DataModule1 do
  begin
    try
      try
        qry:=GetRecSet('Select * from Table1',Conn1);
        if not qry.Eof then
        begin
          Showmessage(qry.FieldByName('ProviderName').AsString);
        end;
      except
        raise;
      end;
    finally
      FreeAndNil(qry);
    end;
  end;
end;    function TDataModule1.GetRecSet(SQL: String;
  DBCon: TADOConnection): TADODataSet;
var
  Qry:TADODataSet;
begin
  Result := nil;
  try
    Qry:=TADODataSet.Create(nil);
    Qry.Connection:=DBCon;
    Qry.CommandText:=SQL; Qry.Open;
    Result := Qry;
  except
    FreeAndNil(Qry);
    raise;
  end;
end;
系統時間:2024-07-15 8:26:31
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!