procedure TForm1.SpeedButton2Click(Sender: TObject);
var
sqlstmt:string;
begin
sqlstmt:='CREATE TABLE TEST_TBL '+
'('+
'TSNO INTEGER not null,'+
'TSNAME VARChar(30) ,'+
'TSQTY DECIMAL(14,2) Default 0 ,'+
'primary key(TSNO)'+
')';
if FDConnection1.Connected=true then
begin
try
FDQuery1.SQL.Clear;
FDQuery1.SQL.Add(sqlstmt);
FDQuery1.ExecSQL();
except
on E: EFDDBEngineException do
ShowMessage(E.ClassName+' error raised, with message : '+E.Message);
end;
end
else ShowMessage('Connected ERR');
end;
//--------------------------------------------------------------------------
procedure TForm1.SpeedButton18Click(Sender: TObject);
var
sqlstmt:string;
LocateResult:Boolean;
begin
//UPDATE->EDIT
FDTable1:=TFDTable.Create(Self);
FDTable1.Connection:=FDConnection1;
FDTable1.TableName:='TEST_TBL ';
FDTable1.Open;
LocateResult:=FDTable1.Locate('TSNO',Edit_TSNO.Text,[]);
if LocateResult then
begin
if not FDConnection1.InTransaction then FDConnection1.StartTransaction; // トランザクションの開始
try
if not (FDTable1.State in [dsEdit,dsInsert]) then FDTable1.Edit;
FDTable1.FieldByName('TSNO').AsInteger := StrToInt(Edit_TSNO.Text);
FDTable1.FieldByName('TSNAME').AsString := Edit_TSNAME.Text;
FDTable1.FieldByName('TSQTY').AsCurrency:= StrToCurr(Edit_TSQTY.Text);
FDTable1.Post();
FDConnection1.Commit; // トランザクションのコミット
ShowMessage('ていせい コミット しました。');
except
FDConnection1.Rollback; // トランザクションのロールバック
ShowMessage('ていせい えらーです、ロールバック しました。');
end;
end
else
begin
Edit_TSNO.Clear;
Edit_TSNAME.Clear;
Edit_TSQTY.Clear;
end;
FDTable1.Close();
end;
//--------------------------------------------------------------------------
procedure TForm1.SpeedButton11Click(Sender: TObject);
var
crQTY:Currency;
sqlstmt:string;
begin
//INSERT
SQLstmt:='insert into TEST_TBL '
+' ( '
+'TSNO,TSNAME,TSQTY '
+' ) '
+'values'
+' ('
+':TSNO,:TSNAME,:TSQTY '
+' )';
//if not(FDConnection1.InTransaction) then FDConnection1.StartTransaction; // トランザクションの開始
FDConnection1.StartTransaction;
try
FDQuery1:=TFDQuery.Create(Self);
FDQuery1.Connection:=FDConnection1;
FDQuery1.SQL.Clear; //SQLクリアー
FDQuery1.SQL.Text:= sqlstmt; // 実行するDML(INSERT)SQLをセット
FDQuery1.ParamByName('TSNO').AsInteger := StrToInt(Edit_TSNO.Text);
//FDQuery1.ParamByName('TSNAME').AsString := Edit_TSNAME.Text; //<-はダメ
FDQuery1.ParamByName('TSNAME').AsWideString := Edit_TSNAME.Text; //pg はFDQuery1のみ、WideString FDtableは.AsStringでOK
//pg8.4/8.2でもFDQueryのAsCurrencyが通らない
FDQuery1.ParamByName('TSQTY').AsCurrency:=StrToCurr(Edit_TSQTY.Text);
FDQuery1.Execute();
FDConnection1.Commit; // トランザクションのコミット
ShowMessage('とうろく こみっと しました。');
except
FDConnection1.Rollback; // トランザクションのロールバック
ShowMessage('とうろく えらーです、ろーるばっく しました。');
end;
FDQuery1.Free();
end;
//--------------------------------------------------------------------------
http://alexgorbatchev.com/SyntaxHighlighter/manual/brushes/