PDA

View Full Version : error هنگام insert



farzad_az_shiraz
یک شنبه 14 مرداد 1386, 21:07 عصر
سلام من با کد زیر ابتدا چک میکنم اگه شخصی با مشخصاتی که درون فیلد ها وارد میشه وجود نداشته باشه آنگاه عمل insert انجام بشه .



begin
AdoQuery1.sql.clear;
AdoQuery1.sql.Add('select * from aza where');
AdoQuery1.sql.Add('((fname=:p1 and lname=:p2) and ((faname=:p3 and shshe=:p4) and ((tavalod=:p5 and tahsil=:p6) and (tel=:p7 and address=:p8))))');
AdoQuery1.Parameters.ParamByName('p1').Value:=edit 4.text;
AdoQuery1.Parameters.ParamByName('p2').Value:=edit 5.text;
AdoQuery1.Parameters.ParamByName('p3').Value:=edit 6.text;
AdoQuery1.Parameters.ParamByName('p4').Value:=edit 7.text;
AdoQuery1.Parameters.ParamByName('p5').Value:=Date TimePicker1.Date;
AdoQuery1.Parameters.ParamByName('p6').Value:=edit 8.text;
AdoQuery1.Parameters.ParamByName('p7').Value:=edit 9.text;
AdoQuery1.Parameters.ParamByName('p8').Value:=edit 10.text;
AdoQuery1.Open;
if ADOQuery1.RecordCount=0 then
begin
ADOQuery1.Close;
ADOQuery1.SQL.Add('insert into aza values(:a,:b,:c,:d,:e,:f,:g,:h,:i,:j,:k)');
ADOQuery1.Parameters.ParamValues['a']:=Edit4.Text;
ADOQuery1.Parameters.ParamValues['b']:=Edit5.Text;
ADOQuery1.Parameters.ParamValues['c']:=Edit6.Text;
ADOQuery1.Parameters.ParamValues['d']:=Edit7.Text;
ADOQuery1.Parameters.ParamValues['e']:=Edit9.Text;
ADOQuery1.Parameters.ParamValues['f']:=Edit10.Text;
ADOQuery1.Parameters.ParamValues['g']:=Edit8.Text;
ADOQuery1.Parameters.ParamValues['h']:=ComboBox1.Text;
ADOQuery1.Parameters.ParamValues['i']:=DateTimePicker1.Date;
ADOQuery1.Parameters.ParamValues['j']:=Edit1.Text;
ADOQuery1.Parameters.ParamValues['k']:=Edit2.Text;
ADOQuery1.Open;
Edit1.Clear;
Edit2.clear;
Edit3.Clear;
Edit4.Clear;
ComboBox1.Clear;
Edit5.Clear;
Edit6.Clear;
Edit7.Clear;
Edit8.Clear;
Edit10.Clear;
Edit9.Clear;
end
else
MessageBox(hwnd_top,'ÔÎÕí ÈÇ Çíä ãÔÎÕÇÊ ÞÈáÇ ÚÖæ ÔÏå ÇÓÊ','ÊæÌå',mb_ok);
end;

ولی به من این error را میده :


http://usera.imagecave.com/farzad_az_shiraz/error.bmp.jpg


بدون خارج شدن بعد از اینکه دوباره اجرا میدم عمل insert انجام میشه.
علت error چی هست ؟

Batman
یک شنبه 14 مرداد 1386, 21:54 عصر
با سلام
دوست عزیز access violation ممکنه دلایل زیادی داشته باشه فراخوانی یه شی ای که از حافظه خارج شده باشه (free) (البته اگه درست گفته باشم نقل قول از اقای کشاورز هستش)
اما در دستورات بالا بعد از دریافت متغییر k از ورودی به جای aadoquery1.open از adoquery1.execsql استفاده کن
موفق باشید

SYNDROME
یک شنبه 14 مرداد 1386, 22:00 عصر
با سلام
دقیقا در زمان اجرای کدوم خط این پیغام داده می شود؟
موفق باشید

farzad_az_shiraz
دوشنبه 15 مرداد 1386, 06:20 صبح
سلام
به دستور زیر که می رسه error می ده ؟؟؟؟

ADOQuery1.SQL.Add('insert into aza values(:a,:b,:c,:d,:e,:f,:g,:h,:i,:j,:k)');

farzad_az_shiraz
دوشنبه 15 مرداد 1386, 06:27 صبح
سلام دو باره
بچه ها ممنون مشکلم حل شد :
اول اینکه در زمان insert به جای ADOQuery1.Close از ADOQuery1.sql.clear استفاده کردم و در آخر هم از adoquery1.execsql .
البته error به خاطر ADOQuery1.Close بود.
موفق باشید.

farzad_az_shiraz
دوشنبه 15 مرداد 1386, 17:09 عصر
در زمان insert به جای ADOQuery1.Close از ADOQuery1.sql.clear استفاده کردم

سلام کسی علتش را می دونه ؟؟

SYNDROME
دوشنبه 15 مرداد 1386, 17:50 عصر
با سلام

سلام کسی علتش را می دونه ؟؟
شما زمانی که از


ADO.SQL.Add('');

استفاده می کنید Textرا به مقدار قبلی AOD.SQL.Textاضافه می کند و موقع اجرا می تواند خطا تولید کند.
موفق باشید

mzjahromi
دوشنبه 15 مرداد 1386, 19:54 عصر
ولی اون خطا به اینا ربطی نداره

SYNDROME
دوشنبه 15 مرداد 1386, 20:36 عصر
با سلام

ولی اون خطا به اینا ربطی نداره
با تشکر
کاملا درسته.
خطای بالا ربطی به این موضوع ندارد.
منظور بنده این بود که این کار تولید خطا می کند.(ولی منظورم خطای بالا نبود)
موفق باشید

farzad_az_shiraz
دوشنبه 15 مرداد 1386, 20:42 عصر
من که جوابمو نگرفتم ؟؟؟!!!

SYNDROME
دوشنبه 15 مرداد 1386, 23:25 عصر
با سلام

من که جوابمو نگرفتم ؟؟؟!!!
در بالا هم دوستمان اشاره کرد Closeیا Clearکه شما انجام می دهید ربطی به پیغام که شما می گویید ندارد.درست است در اجرای برنامه دستور Clearدستورات قبلی را پاک کرده و سپس شما دستورات جدید را می نویسید و اگر Clearنکنید دستورات جدید شما بعد از دستوراتی که قبلا به ADOداده اید قرار می گیرد و ایجاد خطا می کند ولی نه آن خطایی که شما در بالا اشاره کردید.
خطایی که شما در بالا گفتید مثلا زمانی اتفاق می افتد که برنامه می خواهد از Objectی استفاده کند و آن Objectدر حافظه وجود ندارد.
احتمالا این خطا دلیل دیگری دارد.
موفق باشید

merced
سه شنبه 16 مرداد 1386, 06:20 صبح
Bebakhshid Farsi Nadaram

AdoQuery1.Open;

Error ;

Ejraye Khate bala ye Recordset Barmigardoune ...
Vali Dastour-e Insert Ye RecordSet Bar Nemigardoune

AdoQuery1.ExcuteSQL ;

OK ;

mzjahromi
سه شنبه 16 مرداد 1386, 06:39 صبح
Ejraye Khate bala ye Recordset Barmigardoune ...
Vali Dastour-e Insert Ye RecordSet Bar Nemigardoune

قبلا هم گفته شد این خطا مربوط به این که شما میگید نیست

Batman
سه شنبه 16 مرداد 1386, 06:49 صبح
جناب جهرمی ممکنه بگید خطا مزبوط به چیه
متشکرم

mzjahromi
سه شنبه 16 مرداد 1386, 07:15 صبح
مطمئنا اگر مشخص بود همون ابتدا میگفتم
همونطور که دوستان هم گفتند این خطا معمولا به Reference های نامعتبر بر میگرده
من فکر میکنم بطور مستقیم خطا مربوط به این خط نباشه