PDA

View Full Version : چگونه اطلاعات را از ديتابيس به برنامه ر ا بازيابي کنم



ehsanbn
دوشنبه 09 آذر 1388, 09:56 صبح
با سلام

براي به روز در آوردن اطلاعات در برنامه خود فرمي قرار دادم که کاربر برحسب کد و يا نام کالا اطلاعات را به روز در اورد (يعني شرط را کد کالا يا نام کالا گذاشتم و چند تا edit.textهايي هم گذاشتم براي وارد کردن اطلاعات و در نهايت زدن روي دکمه به روز آوري)
من مي خواهم کاربر به محضي که کد کالا يا نام کالا را وارد کرد تمام مشخصات مربوطه را در تمام edit.textها وارد بشوند و کاربر تنها کاري که مي کند اين است که آنچه لازم است را تغيير دهد و در آخر روي دکمه به روز در آوري بزند تا به روز آوري شود (بجاي اينکه کاربر بيايد و تک تک اطلاعات دوباره وارد کند)

benyaminrahimi
دوشنبه 09 آذر 1388, 10:19 صبح
:گیج:بیشتر توضیح بدین

ehsanbn
دوشنبه 09 آذر 1388, 11:35 صبح
يک مثال مي زنم: فرض کنيد يک برنامه دفترچه تلفن داريم که يک فرم جهت ثبت مشخصات و يک فرم براي تغيير مشخصات و يک فرم جستجو و فرم ديگر براي حذف مشخصات . اگر بخواهيم مشخصات را ثبت کنيم مي گوييم که در فرم ثثبت مشخصات اطلاعات وارد شده را از EDIT.TEXTها را بگير و وارد ديتابيس کن . اگر بخواهيم مشخصاتي را که در ديتابيس وجود دارد تغيير دهيم بايد چکار کنيم که بگوييم اول اطلاعات را از ديتابيس براساس شرطي که مي اوريم در فرم تغيير مشخصات و در داخل EDIT.TEXTها بگذارد و سپس شروع به تغييرات لازم بکنيم (منظورم از اينکه تغيير بدهيم يعني اينکه اطلاعاتي را که از ديتابيس گرفتيم و در EDIT.TEXTها قرار دارد را تغيير دهيم و سپس تغييرات را ذخير ه کنيم. )

دلفــي
دوشنبه 09 آذر 1388, 12:42 عصر
با سلام

براي به روز در آوردن اطلاعات در برنامه خود فرمي قرار دادم که کاربر برحسب کد و يا نام کالا اطلاعات را به روز در اورد (يعني شرط را کد کالا يا نام کالا گذاشتم و چند تا edit.textهايي هم گذاشتم براي وارد کردن اطلاعات و در نهايت زدن روي دکمه به روز آوري)
من مي خواهم کاربر به محضي که کد کالا يا نام کالا را وارد کرد تمام مشخصات مربوطه را در تمام edit.textها وارد بشوند و کاربر تنها کاري که مي کند اين است که آنچه لازم است را تغيير دهد و در آخر روي دکمه به روز در آوري بزند تا به روز آوري شود (بجاي اينکه کاربر بيايد و تک تک اطلاعات دوباره وارد کند)


شما ابتدا عمل جستجو رو برحسب فيلدهايي كه مي خواهيد بر اساس آنها ركوردهاي جدول رو ويرايش كنيد انجام دهيد (به عبارتي ركورد مورد نظر رو فيلتر كنيد) ، سپس جدول خود رو در حالت Edit قرار دهيد . حال كاربر قادر است تا اطلاعات ركورد مورد نظر را ويرايش كن ، براي عدم تغيير در فيلدهاي كليدي نيز كافيست ابزار متصل به آنها را در حالت Readonly قرار دهيد ،
در نهايت هم با كليك كاربر بر روي دكمه ذخيره اطلاعات جديد را Post كنيد .

حسین شهریاری
دوشنبه 09 آذر 1388, 12:48 عصر
سلام
شما از edit استفاده کردید یا از dbedit؟
اگه از dbedit استفاده کرده باشید که نیازی به این کارا نیست چون اطلاعات توی دیتاست هست و dbeditها نیز به دیتاست وصل هستند.شما رکورد مورد نظرتونا جستجو کنین، به راحتی اطلاعات را تغییر و متدpost را صدا بزنید.

ولی اگه از edit استفاده میکنید(که من نمیدونم چرا این کارا میکنید) به روش زیر عمل کنید:
فرض کنید اطلاعات را توسط یک Adoquery جستجو کرده و رکورد مورد نظر را یافته اید یا توسط locate آن رکوردی را که میخاین ویرایش کنید را پیدا کردید.حالا بعد از این که از قرار گرفتن رکورد در دیتاست مطمئن شدید به صورت زیر مقادیر فیلدها را درون editها بریزید:
فرض کنید جدول ما داری سه فیلد code,name,avg باشد.


edit1.text:=adiquery1.fieldbyname('code').asfloat
edit2.text:=adiquery1.fieldbyname('name').asstring
edit2.text:=adiquery1.fieldbyname('avg').asfloat

با این کار مقدار فیلدها درون editها قرار میگیرند.سپس تغییرات را اعمال و توسط دستور Update تغییرات را درون جدول اعمال کنید.اینطوری:


adoquery.sql.text:='update table1 set code='+edit1.text+' ,name='+Quotedstr(edit2.text)+' ,avg='+edit3.text
adoquery.execsql

masood samadi
دوشنبه 09 آذر 1388, 16:06 عصر
سلام

ابتدا برسی می کنی که آیا کدی که وارد کردی در دیتابیس ذخیره شده است یا نه سپس اگر ذخیره شده می گویی آن ها را در editها قرار دهد

if adotable1.locate('code',edit1.text,[ ] )then
begin
adotable1.edit
edit2.text:=adotable1.fieldbyname('name').asstring
edit2.text:=adotable1.fieldbyname('telephone).asst ring
end
else
showmessage('cod not found')
اینک اطلاعات ذخیره شده مربوط به آن کد بازیابی می شود و شما می توانید آنها را بروز رسانی کنید

adoquery1.sql.text:='update noottelephone set code='+edit1.text+',name='+quotedstr(edit2.text)+' ,telephone='+quotedstr(edit3.text)+' where code='+edit1.text
adoquery1.execsql