View Full Version : روشی دیگه برای حذف رکورد
hasandrw
جمعه 11 شهریور 1390, 18:18 عصر
سلام دوستان
برای حذف یک رکورد انتخاب شده در فاکتور فروش من از این کد لستفاده می کنم.
with dm.ADOQuery1 do begin
Close;
SQL.Text:='Delete From Kala Where Ckala Like"'+Edit3.Text+'"';
ExecSQL;
end;
ولی این روش یک مشکل داره برای حذف رکورد در فاکتور!
شاید در فاکتور دو بار یک کالا و با کد شبیه به هم وجود داشته باشه.پس این روش در این جا جواب نمیده؟
آیا دوستان کسی روش دیگه ای بلده که با انتخاب رکورد مورد نظر لبشه حذفش کرد؟
اگه دوستان کسی بلده از من بی دیغ نکنه.
متشکرم
یا حق
pezhvakco
جمعه 11 شهریور 1390, 20:02 عصر
هر ردیف فاکتور فروش باید یک شماره ردیف داشته باشه .
بر اساس اون پاک کن .
سعید صابری
جمعه 11 شهریور 1390, 20:26 عصر
چرا از خود adoquery استفاده نمی کنی؟
Adoquery1.Delete
hasandrw
جمعه 11 شهریور 1390, 20:41 عصر
چون برای اصلاح فاکتور فروش است و اون رکوردهایی که مربوط به فاکتور با شماره خاص است نمیشه از خود Ado Query استفاده کرد.
......................
جناب pezhvakco چون ردیف فاکتورم قابلیت ذخیره شدن ندارن.نمی تونم این جوری که شما می گین استفاده کنم.
اگه روشی غیر از این دو روش کسی بلده راهنمایی ام کنه.روشی که بشه با انتخاب رکورد،همئن رکورد را حذف کرد.
pop123
جمعه 11 شهریور 1390, 21:19 عصر
می تونید از sp ها استفاده کنید
hasandrw
جمعه 11 شهریور 1390, 21:54 عصر
من با sp کار نکردم.چون DB ام اکسس است و پارامتر نداره.
با Query اگه کسی بلده راهنمایی ام کنه.
سعید صابری
جمعه 11 شهریور 1390, 22:20 عصر
چون برای اصلاح فاکتور فروش است و اون رکوردهایی که مربوط به فاکتور با شماره خاص است نمیشه از خود Ado Query استفاده کرد.
.
چرا نمی شود؟
hasandrw
جمعه 11 شهریور 1390, 23:44 عصر
ببین دوست من کل فیلدهام را به Query،ادش کردم.
و وقتی با این دستور بخوام عملیات حذف را انجام بدم.خطا میده.
البته زمانی هم خطا میده که دو رکورد فیلدهاش مثل هم باشند.در ضمن من از فیلد کلید هم استفاده نمی کنم.
این هم خطاش:
74751
khoshblagh
شنبه 12 شهریور 1390, 11:45 صبح
با سلام خدمت دوستان
یک راه دیگه اینه که RecNo (شماره رکورد) را اول بدست آورید و سپس بر اساس شماره رکورد آن رکورد را حذف نمائید.
سعید صابری
شنبه 12 شهریور 1390, 20:56 عصر
با سلام خدمت دوستان
یک راه دیگه اینه که RecNo (شماره رکورد) را اول بدست آورید و سپس بر اساس شماره رکورد آن رکورد را حذف نمائید.
وقتی فیلد مورد جستجو مقدار تکراری باشه باز همون مشکل هست
a_mosavian
جمعه 18 شهریور 1390, 01:13 صبح
یک مشکل دیگه هم داره کدی که نوشتی و اون SQL Injection هست! من می تونم توی اون کادر متنی یه چیزی بنویسم که کل بانک داده ت رو کز بده!
hasandrw
یک شنبه 20 شهریور 1390, 22:25 عصر
منظورتون از SQL Injection چیه؟
اون کادر منتی از دید کاربر خارج میشه.
yhakzar
سه شنبه 22 شهریور 1390, 15:35 عصر
با سلام
حتما جدول شما داراب فیلد کلیدی می باشد. که در این صورت می تونی بر اساس فیلد کلید مستقیما رکورد مورد نظر را حذف کنی ، چئن فیلد کلیدی دارای مقداری تکراری نمی باشد. اگر به هر دلیلی فیلد کلیدی ندارد ، می تونی به عنوان یک ابرکلید کلیه فیلدهای جدول را به عنوان کلید در نظر بگیری. به نظر می رسه با توجه به مشکلی که داری نمی تونی از جستجو بر اساس فیلد تکی و کلیدی عمل کنی ، به نظر بهتره توسط برنامه نویسی در دلفی ابتدا Query خودت را بر اساس چند فیلد فیلترکنی ، در نهایت مستقیما عملیات حذف را بر روی Query انجام بدی. مثلا :
ADOQuery1.filtered:=False;
ADOQuery1.filter='Fieldname='+Quotstr(value)
ADOQuery1.filtered=True
موفق باشی
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.