daneshmand1354
سه شنبه 17 آبان 1390, 19:14 عصر
به مثال زیر دقت کنید-دستور شماره یک
ADODataSet1.CommandText:='select * from tbl1 where field1='+QuotedStr(Edit1.Text)
+' and field2='+QuotedStr('abc');
حال از تکنیک زیر استفاده کنید تا دستور QuotedStr را کنار بگذارید-دستور شماره دو
ADODataSet1.CommandText:='select * from tbl1 where field1="'+Edit1.Text
+'" and field2="abc"';
در این روش از گیومه " برای این منظور استفاده شده و در نهایت از دستور زیر یکبار استفاده میکنیم.
ADODataSet1.CommandText:=stringreplace(ADODataSet1 .CommandText,'"',char(39),[rfReplaceAll]);
این دستور گیومه دوتایی " را به گیومه تکی یا همان char(39) تبدیل میکند
اگر دستور زیر را در یک تابع قرار دهیم لطف آن بیشتر میشود
به این صورت
function CommaToComma(instring: widestring): string;
begin
result:=StringReplace(instring,'"',char(39),[rfReplaceAll]);
end;
در اینصورت دستور شماره دو به این صورت اصلاح میشود
ADODataSet1.CommandText:=CommaToComma('select * from tbl1 where field1="'+Edit1.Text
+'" and field2="abc"');
همانطور که مشاهده می کنید حجم کدنویسی کم میشه.
ADODataSet1.CommandText:='select * from tbl1 where field1='+QuotedStr(Edit1.Text)
+' and field2='+QuotedStr('abc');
حال از تکنیک زیر استفاده کنید تا دستور QuotedStr را کنار بگذارید-دستور شماره دو
ADODataSet1.CommandText:='select * from tbl1 where field1="'+Edit1.Text
+'" and field2="abc"';
در این روش از گیومه " برای این منظور استفاده شده و در نهایت از دستور زیر یکبار استفاده میکنیم.
ADODataSet1.CommandText:=stringreplace(ADODataSet1 .CommandText,'"',char(39),[rfReplaceAll]);
این دستور گیومه دوتایی " را به گیومه تکی یا همان char(39) تبدیل میکند
اگر دستور زیر را در یک تابع قرار دهیم لطف آن بیشتر میشود
به این صورت
function CommaToComma(instring: widestring): string;
begin
result:=StringReplace(instring,'"',char(39),[rfReplaceAll]);
end;
در اینصورت دستور شماره دو به این صورت اصلاح میشود
ADODataSet1.CommandText:=CommaToComma('select * from tbl1 where field1="'+Edit1.Text
+'" and field2="abc"');
همانطور که مشاهده می کنید حجم کدنویسی کم میشه.