PDA

View Full Version : سوال: دستور Update



acilios
جمعه 14 تیر 1387, 21:19 عصر
سلام خدمت همه دوستان.

من توی بانک SQL میخوام که مقدار یک فیلد رو که از نوع عددی از مقداری که از کاربر میگیرم رو کم(منها)کنم.دستورش چی میشه ؟

البته این سوال مربوط به بخش فروش کالا(آهن) برنامه هستش که مقدار فروش باید از مقدار موجودی انبار کم بشه.
متشکرم.

Hsimple11
جمعه 14 تیر 1387, 21:26 عصر
برای انجام اعمال ساده ریاضی همان علائم + - * / را بکار گیرید. به عنوان مثال می توانید مقدار مورد نظر را از فیلد مربوطه با متد MyField.AsInteger دریافت کرده و تفریق خود را انجام دهید.
اگر منظور تفریق چند رکورد از یک پایگاه از پایگاه دیگر است میتوانید از دستور Minus استفاده کنید.

موفق باشید..

acilios
شنبه 15 تیر 1387, 06:53 صبح
ممنون از راهنماییتون.
یک سوال کلی هم دارم و اون اینه که برای هر جدول باید یک " کوری , دیتاسورس و تیبل" قرار داد ؟
من در برنامم همه اینا رو توی " دیتا ماژول " قرار دادم.
این کد رو برای آپدیتش نوشتم ولی خطا میدهMissing SQL Property

with dm.ADOQuery1 do
begin
Close;
sql.Clear;
Open;
nvazn:=FieldByName('svazn').AsInteger-strtoint(edit3.Text);
SQL.Add('update anbar set sname='+''''+edit1.text+''' where');
sql.Add('svazn='+''''+inttostr(nvazn)+'''');
Active:=false;
Active:=true;
end;

Hsimple11
شنبه 15 تیر 1387, 21:13 عصر
در مورد سوال اولتان در پست بعدی بطور کامل توضیح خواهم داد.
nvazn مقدار نهایی پس از کم کردن است؟ و میخواهید آن را جایگزین svazn در جدول کنید؟

acilios
یک شنبه 16 تیر 1387, 06:31 صبح
با سلام.
بله nvazn مقدار نهایی که باید ثبت بشه.
مشکل آپدیت بر طرف شد.
ولی اگه بخوام که مقدار فیلد svazn رو توی یه متغیری بریزم باید چیکار کنم ؟
svazn نام فیلدیه که وزن کالا رو ذخیره میکنه.

SYNDROME
یک شنبه 16 تیر 1387, 06:37 صبح
ولی اگه بخوام که مقدار فیلد nvazn رو توی یه متغیری بریزم باید چیکار کنم ؟
nvazn نام فیلدیه که وزن کالا رو ذخیره میکنه.
برای این کار از FieldByName استفاده کنید.


vnvazn := ADO.FieldByName('nvazn').asinteger;

موفق باشید

acilios
یک شنبه 16 تیر 1387, 06:55 صبح
این دستور اولین رکورد رو برمیگردونه
من میخام رکوردی که مقدار فیلد sname اون برابر X واکشی کنم !

Hsimple11
یک شنبه 16 تیر 1387, 16:13 عصر
ابتدا رکوردی که فیلد sname آن برابر با X هست رو با Select یا فیلتر یا Locate پیدا کنید و بعد محتوای nvazn را از طریق متد AsInteger در متغیر مربوطه بریزید.

delphiprog3000
سه شنبه 18 تیر 1387, 09:58 صبح
با سلام.

به این صورت میشود:


var
nvazn:string;
begin
with Adoquery1 do
begin
close;
sql.text:='select * from table1 where nvazn like '+Quetedstr(strtoint(edit1.text));
open;
if not isempty then
begin
nvazn:= Fieldbyname('nvaz').asinteger;
nvazn:=Fieldvalues['nvazn']; =============> به این صورت هم میشود
end;
end;
end;


موفق باشید..................

acilios
شنبه 22 تیر 1387, 08:01 صبح
سلام خدمت دوستان عزیز.
از همگی به خاطر راهنمایی مفیدتون ممنونم.
مشکلم حل شد.