ورود

View Full Version : استفاده از یک تکنیک به جای استفاده از دستور QuotedStr



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"');


همانطور که مشاهده می کنید حجم کدنویسی کم میشه.

BORHAN TEC
سه شنبه 17 آبان 1390, 20:02 عصر
به نظر من این کار اصلاً جالب نیست و بهتره که همیشه از متد ParamByName استفاده کنید که کد نوشته شده خوانایی بالایی داشته باشد.

MohsenB
سه شنبه 17 آبان 1390, 20:13 عصر
سلام بر همه


اصلا این کارا رو نمیخواد . اونایی که دلفی رو نوشتن به فکر اینجاش هم بودن . فقط کافیه هرجا نیاز به کوتیشن داشتین دوتا بزارین ، ببینید :


ADODataSet1.CommandText:='select * from tbl1 where field1='''+Edit1.Text+''' and field2=''abc'';';


موفق و پیروز باشید