PDA

View Full Version : مشکل با ADO و SQLServer



saeed_d
چهارشنبه 09 مهر 1382, 11:53 صبح
دوستان عزیز سلام :o

من تازه کار با SQL Server را شروع کرده ام و یک برنامه نوشته ام که با ADO به بانکم وصل می شوم و تا اینجا همه چیز درست انجام می شود. مشکل اینجاست که تا وقتی که داخل برنامه هستم اطلاعات درون جدول وجود دارند اما وقتی که ار برنامه خارج می شوم و دوباره به برنامه باز می گردم اثری از اطلاعات قبلی نیست. به نظر شما مشکل از کجا می تواند باشد.
:roll:

SReza1
جمعه 11 مهر 1382, 20:56 عصر
میشه بیشتر توضیح بدین؟ :oops:

saeed_d
شنبه 12 مهر 1382, 09:02 صبح
دوست گرامی
من تا مرحله اتصال به بانک مشکلی ندارم اما در برنامه ام برای وارد کردن مقادیر فیلدها ابتدا با
Insert یک رکورد خالی در بانک ایجاد می کنم بعد با FieldValues مقادیری را داخل فیلدها می ریزم و در انتها با پراسیجر Post آنها را ذخیره می کنم.
حال این اطلاعاتی را که در جدول ریخته ام تا زمانی که داخل برنامه هستم وجود دارند اما همینکه خارج می شوم و دوباره وارد می شوم خبری از اطلاعات قبلی نیست یعنی جدول کاملا خالی است. :oops:
متشکرم 8)
در ضمن کد مربوط به این قسمت مانند زیر است. آیا اشکالی دارد؟ :wink:


traficform.Table1.Insert;
Traficform.Table1.FieldValues['DayRnDr']:=trimrigh t(inttostr(dday))+trimright(rn)+'ogt';
traficform.Table1.FieldValues['Year']:=ysh;
traficform.Table1.FieldValues['month']:=msh;
traficform.Table1.FieldValues['day']:=dsh;
traficform.Table1.FieldValues['Rn']:=rn;
traficform.Table1.FieldValues['Cn']:=cnname;
traficform.Table1.FieldValues['Kind']:=ct;
traficform.Table1.FieldValues['Direct']:='ogt';
traficform.Table1.FieldValues['Ch_n']:=chno;
traficform.Table1.FieldValues['ASR']:=asr1;
traficform.Table1.FieldValues['AHT']:=aht1;
traficform.Table1.FieldValues['Zd']:=zd1;
traficform.Table1.FieldValues['Ch_req']:=0;
traficform.Table1.Post;

(امید)
شنبه 12 مهر 1382, 15:21 عصر
با سلام
کدی که نوشتی ظاهرا هیچ ایرادی نداره. بعد از پست کردن قبل از اینکه برنامه رو ببندی دیتا بیس رو نگاه کن ببین اصلا رکورد جدید در دیتا بیس درج شده یا نه .
در این جور موارد پیشنهاد می کنم از step over یا run to cursor استفاده کنید تا دقیقا مرحله اجرای هر خط رو بتونید دنبال و ارزیابی کنید.

said ali
شنبه 12 مهر 1382, 15:52 عصر
با سلام
فکر کنم بانکت گم میشه یعنی یک جورایی ادرس اون عوض میشه چون خودم یه بار یک همچین مشکلی داشتم که ایراد از همینجا بود.

saeed_d
یک شنبه 13 مهر 1382, 09:47 صبح
با سلام
فکر کنم بانکت گم میشه یعنی یک جورایی ادرس اون عوض میشه چون خودم یه بار یک همچین مشکلی داشتم که ایراد از همینجا بود.

جناب said ali
اگه ممکنه بیشتر توضیح بدین :roll:

said ali
یک شنبه 13 مهر 1382, 11:28 صبح
با سلام
مشکل من ایجاد دو بانک هم نام در دو مکان مختلف بود که در ابتدا ادرس دهی به بانک اول بود و در هنگام ادیت یا پست ادرس بانک تغییر میکرد یعنی تو برنامه خودم اون رو ست میکردم و اطلاعات تو یه جای دیگه وارد میشد و بانک من هنوز خالی بود.
البته خیلی بعید یه همچین مشکلی ایجاد بشه ولی برای من اتفاق افتاده :oops: :oops:

JavanSoft
یک شنبه 13 مهر 1382, 13:04 عصر
شما با یک حلقه For ساده می توانید در ابتدای پروژه تمامی عناصری که در تمامی فرمها وجود دارند را چک کنید و اگر از نوع AdoTableیا TTable و یا Queryو یا غیره هستند را چک کنید تا مطمئن شوید همه چیز درست است

kamran123
جمعه 18 مهر 1382, 01:12 صبح
معمولاٌاکثر اوقات اگه از Post استفاده کنید این اتفاق می افته چون Post فقط در بافر کام÷یوتر خودتون تا مدتی تغییرات رو نگه می داره بعد ارسال می کنه حالا برای مطمئن شدن برای ذخیره ÷س از Postبهتره یه بار Table رو Close کنید و دوباره Open کنید تا بافر در بانک نوشته بشه.
البته این روش هم بعضی اوقات عمل نمی کنه شما اگه از ADO استفاده می کنید می تونید با کد SQL این کارو انجام بدین


S:='insert into Table (NO,Name) '+
' values('+(inttostr(i+1))+
',N'+ QuotedStr(EditCOURSEBOOK.Text)+')';
SqlQuery.SQL.Clear;
SqlQuery.SQL.Add(S);
SqlQuery.ExecSQL;

شنبه 08 آذر 1382, 12:50 عصر
باید بعد از post شدن رکورد . اون رو applayupdate(-1) (اگه درست نوشته باشم ) کنی(البته در مورد adoquery ) .
...................................
به امید روزی که ایران از نظر کامپیوتر خدایی کند . با تلاش همه برنامه نویسان و علاقه مندان به کامپیوتر .