ورود

View Full Version : سوال: مشکل در refresh نشدن پایگاه داده



fereshteiman
پنج شنبه 11 فروردین 1390, 00:26 صبح
با سلام
من یه برنامه ای دارم در vb6 که قراره وقتی در فرم اول روی یک رکورد بودم ، در فرم دوم بقیه اطلاعات همون رکورد رو به من نشون بده و میتونم ویرایش کنم. تا اینجا مشکلی نیست. که در فرم دوم یک تکس باکس گذاشتم که کد (فیلد اصلی) رو از فرم اول میگیره و در فرم دوم نشون میده یعنی در فرم دوم دنبالش می گرده و نشون میده
با این کد:
Data1.RecordSource = "SELECT * FROM ed WHERE ID='" & Text1.Text & "'" Data1.Refresh
مشکل اینجاست که توی فرم دوم باید اطلاعات رو از 2 تا جدول بخونه یعنی 2 تا data داره که با همین دستور بالا برای data دوم هم مشکلی در نشون دادن فیلدها و رکوردها پیش نمیاد:لبخندساده:
اما وقتی یه رکورد جدید در فرم اول ایجاد میکنم و در فرم دوم میخوام بقیه اطلاعات رو وارد کنم، اطلاعات data1 رو همون لحظه و بدون مشکل وارد میشه و ثبت میشه ولی با data2 نمیتونه ارتباط برقرار کنه البته بعد از این که یک بار برنامه رو میبندم و دوباره باز میکنم مشکل حل میشه:متفکر:
نمیدونم چی کار کنم؟
refresh هم میکنم فیلدهای مربوط به data 2 رو خالی میکنه
پایگاه داده هم اکسس هست
باید چی کار کنم؟ خواهش میکنم راهنماییم کنید:گریه:
:گریه::گریه::گریه:

ali190
پنج شنبه 11 فروردین 1390, 01:52 صبح
سلام
نمونه برنامه ات رو در اینجا قرار بده تا مشکل رو بررسی کنیم
یاعلی

M_Maskout
پنج شنبه 11 فروردین 1390, 12:29 عصر
سلام
هر جا که می‌خوای جدولت رو بروز کنی (مثلاً تو Form_Activate از Form2) از دستور
Data2.Recordset.Requery
استفاده کن.

vbamirvb
پنج شنبه 11 فروردین 1390, 17:43 عصر
سلام
وقتی که data1 رو وارد کردی می تونی پایگاه داده را یک بار باز و بسته کنی با دستور زیر
data1.close
data1.open
مشکلت حل میشه
مگه نمی گی وقتی برنامه را می بندم و باز می کنم درست می شه این هم همین کارو می کنه دیگه.
اگه نتونستی می تونی برنامه ات را برام میل کنی حلش کنم.
vb.amir.m@gmail.com
vb_amir_m@yahoo.com

aminaltavista
یک شنبه 14 فروردین 1390, 18:13 عصر
با سلام
من یه برنامه ای دارم در vb6 که قراره وقتی در فرم اول روی یک رکورد بودم ، در فرم دوم بقیه اطلاعات همون رکورد رو به من نشون بده و میتونم ویرایش کنم. تا اینجا مشکلی نیست. که در فرم دوم یک تکس باکس گذاشتم که کد (فیلد اصلی) رو از فرم اول میگیره و در فرم دوم نشون میده یعنی در فرم دوم دنبالش می گرده و نشون میده
با این کد:
Data1.RecordSource = "SELECT * FROM ed WHERE ID='" & Text1.Text & "'" Data1.Refresh
مشکل اینجاست که توی فرم دوم باید اطلاعات رو از 2 تا جدول بخونه یعنی 2 تا data داره که با همین دستور بالا برای data دوم هم مشکلی در نشون دادن فیلدها و رکوردها پیش نمیاد:لبخندساده:
اما وقتی یه رکورد جدید در فرم اول ایجاد میکنم و در فرم دوم میخوام بقیه اطلاعات رو وارد کنم، اطلاعات data1 رو همون لحظه و بدون مشکل وارد میشه و ثبت میشه ولی با data2 نمیتونه ارتباط برقرار کنه البته بعد از این که یک بار برنامه رو میبندم و دوباره باز میکنم مشکل حل میشه:متفکر:
نمیدونم چی کار کنم؟
refresh هم میکنم فیلدهای مربوط به data 2 رو خالی میکنه
پایگاه داده هم اکسس هست
باید چی کار کنم؟ خواهش میکنم راهنماییم کنید:گریه:
:گریه::گریه::گریه:
دوست عزیز یه زاهنماییت میکنم گوش بده شاید جواب کارت رو داد
شما فرمودید یه بار که فرم رو باز و بسته میکنید درست میشه ولی لازم به این کار نیست!:قهقهه:
تو یه دکمه یا جایی که خوتون صلاح میدونید این دستور کوچیک رو بنویسید انشائ الله که جوابد میده
form_load
این دستور فرم را یه بار دیگه لود میکنه بدین ترتیب که بدون این که برنامه رو ببندید خودش فرم رو بروز میکنه:لبخندساده:
راستی اگه کارت درست شد و زحمتی برات نبود سورس رو برام بفرست.:تشویق:

returnx
سه شنبه 16 فروردین 1390, 10:25 صبح
بهترین روش ، بستن recordset و باز کردن مجدد ان هست ، روشی که جنابvbamirvb (http://barnamenevis.org/member.php?186877-vbamirvb) گفتن...

M_Maskout
چهارشنبه 17 فروردین 1390, 23:19 عصر
بهترین روش ، بستن recordset و باز کردن مجدد ان هست ، روشی که جنابvbamirvb (http://barnamenevis.org/member.php?186877-vbamirvb) گفتن...
سلام
این روش برای بانکی با 10، 20 یا شاید هم 1000 رکورد، مشکلی ایجاد نمی‌کنه ولی با ده هزار رکورد (و یا بیشتر) مطمئن باشید که به خاطر سرعت عملیات باز کردن بانک، خیلی آزار دهنده می‌شه.