2019年10月1日 星期二

Delphi TADOQuery 查詢資料

參考資料1:[delphi]Delphi ADOQuery連接數據庫的查詢、插入、刪除、修改
參考資料2:請問有關動態建立ADOQuery的方法

uses ...., ADODB; //要使用TADOQuery必須在uses這裡先引用ADODB

procedure TForm1.ButIfClick(Sender: TObject);
var tmp: string;
var DMODULE:TDATAMODULE;
    ADOQueryTmp1:TADOQuery;
begin

  tmp:='';
  InputQuery('查詢', '請輸入學號或姓名:', tmp);
  tmp:=trim(tmp);
  if tmp='' then
  begin
    ShowMessage('要查詢的資料不能為空白');
    Exit;
  end;

  DMODULE := TDATAMODULE.Create(Application);
  ADOQueryTmp1 := TADOQuery.Create(DMODULE);
  ADOQueryTmp1.ConnectionString :='資料庫的連線字串';
  with ADOQueryTmp1 do
  begin
      ADOQueryTmp1.Close;
      ADOQueryTmp1.SQL.Clear;
      {
      //法1 開始==========================
      //法1.用字串串字串的方式組合出SQL指令
      ADOQueryTmp1.SQL.Text:='Select StudentID,StudentName from Student where StudentID=' + quotedstr(tmp) + ' or StudentName=' + quotedstr(tmp);
      //法1 結束==========================
      }

      //法2 開始==========================
      //建議使用法2
      ADOQueryTmp1.SQL.Text:='Select StudentID,StudentName from Student where StudentID=:D1 or StudentName=:D2';
      ADOQueryTmp1.Parameters.ParamByName('D1').Value:=tmp;
      ADOQueryTmp1.Parameters.ParamByName('D2').Value:=tmp;
      //法2 結束==========================

      //ADOQuery.Open與ADOQuery.ExecSQL不同之處在於ADOQuery.Open一般用在Select查詢;而ADOQuery.ExecSQL用在insert、delete、update等。
      ADOQueryTmp1.Open;

      if ADOQueryTmp1.isempty=false then
      begin
         ShowMessage('有資料,姓名:' + ADOQueryTmp1.FieldByName('StudentName').AsString);
      end;
      ADOQueryTmp1.Close;
  end;

end;

Delphi 字串切割

我所使用的環境是Delphi 7

以下是字串切割的程式碼:

var str_data: string;a: TStringList;
str_data := '0001 王小明'; //假如這是我的資料,0001是職員編號

a := TStringList.Create;
a.Delimiter := ' '; // 指定分割字元
a.DelimitedText := str_data; // 要被分割的字串


然後只要抓取a[0]就可以取得0001