PDA

View Full Version : سوال: چگونه به یکی از خانه های دیتابیس دسترسی داشته باشم!!؟



me.enik
چهارشنبه 27 اردیبهشت 1391, 17:27 عصر
سلام.
ببخشید, ولی یه سوالی برام پیش اومده که قطعا برای اساتید, خیلی ساده است.
به هر حال.
ممنون میشوم کمکم کنید.
خب, حالا سوال من اینه :
یه عکسی رو ضمیمه کردم, من میخوام محتوای اون خانه ای رو که توش 'fazli' نوشته است را, تغییر بدم.
چگونه میتونم به برنامه بگویم!!؟
میدونم یه دستوری هستش به نام fieldbyname و یه سری چیزای دیگه.
اما مشکل اینجاست که نمیشه از این دستور استفاده کرد, چون من نمیدوانم محتوای داخل اون خانه, چی هستش و در کل برنامه, اون محتوا تغییر میکنه.

با تشکر فراوان

سعید صابری
چهارشنبه 27 اردیبهشت 1391, 19:54 عصر
ابتدا باید با استفاده از جستجو مکانما را به ان رکورد انتقال بدی

if ADOTable1.Locate('Field','Fazli',[]) then
begin
ADOTable1.Edit;
ADOTable1.FieldByName('Field').AsString:='ssssssss ss';
ADOTable1.Post;
end;

me.enik
چهارشنبه 27 اردیبهشت 1391, 21:00 عصر
ابتدا باید با استفاده از جستجو مکانما را به ان رکورد انتقال بدی

if ADOTable1.Locate('Field','Fazli',[]) then
begin
ADOTable1.Edit;
ADOTable1.FieldByName('Field').AsString:='ssssssss ss';
ADOTable1.Post;
end;


آخه مشکل اینجاست که من نمیدونم توی اون خانه که الآن مقدارش 'fazli' هستش, مقدارش چیه.
یعنی به جای 'fazli' هر چیزی میتونه باشه.
پس این کد کار نمیکنه!!
یا من دارم اشتباه میکنم؟

یا مثلا نمیشه یه جوری بهش مختصات بدیم!!؟

Felony
چهارشنبه 27 اردیبهشت 1391, 21:03 عصر
میتونی ID رکورد رو جست و جو کنی .

me.enik
چهارشنبه 27 اردیبهشت 1391, 21:10 عصر
میتونی ID رکورد رو جست و جو کنی .

آخه آی دی به کارم نمیاد!!
خیلی ممنون.
نمیتونم مثلا بهش بگم خانه ی دوم field رو فلان کار رو بکن؟

سعید صابری
چهارشنبه 27 اردیبهشت 1391, 21:24 عصر
آخه آی دی به کارم نمیاد!!
خیلی ممنون.
نمیتونم مثلا بهش بگم خانه ی دوم field رو فلان کار رو بکن؟
اگر منظورت رکورد دوم هست میتونی با استفاده از recno انتقال به رکورد خاص بدی

me.enik
چهارشنبه 27 اردیبهشت 1391, 21:40 عصر
اگر منظورت رکورد دوم هست میتونی با استفاده از recno انتقال به رکورد خاص بدی


اگر منظورت رکورد دوم هست میتونی با استفاده از recno انتقال به رکورد خاص بدی

باشه.
خیلی ممنون.
خب, بعدش حالا چی کار کنم؟
الآن مثلا این کد رو نوشتم :

adotabel1.recno:=2;

سعید صابری
چهارشنبه 27 اردیبهشت 1391, 21:56 عصر
این دستور باعث میشه مکانما به خط مورد نظر بره اونجا میتونی به روش که در پست شماره 2 گفتم ویرایش انجام بدی

me.enik
پنج شنبه 28 اردیبهشت 1391, 15:26 عصر
این دستور باعث میشه مکانما به خط مورد نظر بره اونجا میتونی به روش که در پست شماره 2 گفتم ویرایش انجام بدی

سلام.
از همتون خیلی ممنونم.
کلی سر و کله زدم تا درست شد!!
این هم کدی که آخر سر باعث شد به موفقیتم برسم, میزارم تا اگر کسی مثل من گیر کرد, زیاد وقتش گرفته نشه.

adotabel1.Edit;
adotabel1.Locate('field1','khojir',[]);
adotabel1.Edit;
adotabel1.FieldByName('field1').Value:='hamidreza! !';


فقط یه نکته ای رو من متوجه شدم.
اونم این هستش که همان طور که توی کد بالا مشاهده میکنید, دوبار مقدار adotabel1 مساوی شده است با edit.
یعنی اینکه پس از انجام عملیات سرچ, دوباره باید مقدار آن رو مساوی با edit قرار بدهیم.

برای من که اینجوری بوده.
شایدم دارم اشتباه میکنم.:خجالت:
ولی اگر دارم اشتباه میکنم, خبر بدید, یا اگر دارم درست میگم, ممنون میشوم دلیلش رو بدونم. :لبخند:

me.enik
پنج شنبه 28 اردیبهشت 1391, 16:34 عصر
دوباره سلام.
بازم به یه مشکلی بر خوردم که این سری, به مراتب کوچکتر از اون هستش.
گفتم الکی یه تاپیک جدید باز نکنم و همینجا سوالم رو مطرح کنم.
چون خیلی سوالش, سوال نیستش!!

سوالم اینه.
ما مثلا یه دوتا فیلد داریم, میخوایم بکنیمش سه تا.
حالا چی جوری اینکار رو انجام بدیم؟
با استفاده از این دستور :

adotabel1.fields.add();

حالا مشکل من اینجاست که نمیدونم توی اون پرانتز باید چی بنویسم که درست جواب بده.

سعید صابری
پنج شنبه 28 اردیبهشت 1391, 17:24 عصر
این دستور باعث نمیشه که فیلدی به تیبل شما اضافه بشه.

me.enik
پنج شنبه 28 اردیبهشت 1391, 17:38 عصر
این دستور باعث نمیشه که فیلدی به تیبل شما اضافه بشه.
پس باید چی کار کنم؟

راستی به یک مشکل دیگه هم برخوردم.
اونم این هستش که اگر توی دیتابیس, بیشتر از 2 تا فیلد هم داشته باشی, نمایش نمیده.
تکلیف چیه؟

me.enik
پنج شنبه 28 اردیبهشت 1391, 17:58 عصر
پس باید چی کار کنم؟

راستی به یک مشکل دیگه هم برخوردم.
اونم این هستش که اگر توی دیتابیس, بیشتر از 2 تا فیلد هم داشته باشی, نمایش نمیده.
تکلیف چیه؟


مشکل دومم رو تونستم حل کنم.
ولی هنوز تو گیر مشکل اول هستم.

سعید صابری
پنج شنبه 28 اردیبهشت 1391, 19:59 عصر
از کدام دیتابیس استفاده می کنید؟

me.enik
پنج شنبه 28 اردیبهشت 1391, 20:42 عصر
از کدام دیتابیس استفاده می کنید؟

اکسس.
اصول کلی پایگاه داده, مثلا برای پایگاه های مختلف, خیلی تفاوت داره؟

سعید صابری
پنج شنبه 28 اردیبهشت 1391, 23:40 عصر
دوست عزیز اگر جستجو کنید خیلی زودتر و بهتر به نتیجه دلخواهتون میرسید

این کد توسط adoquery یا adocommand اجرا کن

ALTER TABLE TableName ADD COLUMN Field TEXT(50)

me.enik
جمعه 29 اردیبهشت 1391, 16:54 عصر
دوست عزیز اگر جستجو کنید خیلی زودتر و بهتر به نتیجه دلخواهتون میرسید

این کد توسط adoquery یا adocommand اجرا کن

ALTER TABLE TableName ADD COLUMN Field TEXT(50)


اگر میشه یک مثلا بزنید.

hfkh77
جمعه 29 اردیبهشت 1391, 16:58 عصر
خیلی بحث خوبیه.
زیاد به کارم میاد.
لطفا ادامه اش بدهید.
حتما بقیه افراد هم استفاده میکنند.

سعید صابری
جمعه 29 اردیبهشت 1391, 17:58 عصر
اگر میشه یک مثلا بزنید.
خودش مثال بود.
طریقه استفاده

ADOQuery1.SQL.Text:='ALTER TABLE TableName ADD COLUMN Field TEXT(50)';
ADOQuery1.ExecSQL;

me.enik
جمعه 29 اردیبهشت 1391, 19:02 عصر
خودش مثال بود.
طریقه استفاده

ADOQuery1.SQL.Text:='ALTER TABLE TableName ADD COLUMN Field TEXT(50)';
ADOQuery1.ExecSQL;


ارور داد.
ارور از چیه؟

87207


فکر کنم باید adoquery رو اکتیو کنم.
ولی وقتی میخوام اینکار رو کنم, ارور زیر رو میده :


87208



چی کار کنم؟

zidane
شنبه 30 اردیبهشت 1391, 13:20 عصر
باید به جای TableName نام جدول خودتون و به جای Field نام فیلد جدید رو بنویسید

me.enik
شنبه 30 اردیبهشت 1391, 15:09 عصر
باید به جای TableName نام جدول خودتون و به جای Field نام فیلد جدید رو بنویسید

واقعا ممنونم.
پس از کلی سر و کله زدن, بالاخره درست شد.
تشکر.
فقط یه سوالی.
نقش این دستور این پایین چیه؟

ADOQuery1.ExecSQL;

سعید صابری
شنبه 30 اردیبهشت 1391, 15:22 عصر
از اسمش پیداست اجرای کد SQL