PDA

View Full Version : access violation در ارسال به اکسل



afsaneh.asp
یک شنبه 19 مرداد 1393, 23:14 عصر
با سلام
در اجرای کد زیر وقتی میخوام داده ها رو از DataGrid به اکسل اکسپورت کنم با خطای Access violation روبرو میشم. من یک برنامه نویس C# هستم و متاسفانه در مورد Delphi هیچ اطلاعی ندارم. . ممنون میشم راهنمایی کنید.


sx1: TscExcelExport;

...


procedure TForm1.exerExecute(Sender: TObject);
var
ds : TDataset;
cname,cclass : string;
begin
cname := Screen.ActiveControl.Name;
cclass := Screen.ActiveControl.ClassName;
if cclass='TDBGridEh' then
begin
ds:=(ActiveControl As TDBGridEh).DataSource.DataSet;
try
sx1.ExcelVisible:=True;
sx1.LoadDefaultProperties;
sx1.Dataset:=ds ;
sx1.WorksheetName:='Sheet1';
sx1.ExportDataset;
finally
sx1.Disconnect;
end;
end;


if cclass='TDBGrid' then
begin
ds:=(ActiveControl As TDBGrid).DataSource.DataSet;
try
sx1.ExcelVisible:=True;
sx1.LoadDefaultProperties;
sx1.Dataset:=ds ;
sx1.WorksheetName:='Sheet1';
sx1.ExportDataset;
finally
sx1.Disconnect;
end;
end;
end;

یوسف زالی
دوشنبه 20 مرداد 1393, 08:41 صبح
سلام. روی این کد ها break point بگذارید و برنامه رو با F8 خط به خط ران کنید تا ببینیم سر کدوم خط ایراد دارید. شاید در ActiveControl

BORHAN TEC
دوشنبه 20 مرداد 1393, 10:05 صبح
با سلام،
این خطا نمیتونه از ActiveControl باشه، چون کلاس اون توی شرطها بررسی شده. من حدس می زنم که خطا مربوط به sx1 هست و باید قبل از استفاده از اون، اون رو Create کنید.
موفق باشید...

یوسف زالی
دوشنبه 20 مرداد 1393, 10:57 صبح
این خطا نمیتونه از ActiveControl باشه، چون کلاس اون توی شرطها بررسی شده.

اتفاقا می تونه.
شما فرض کن به هر دلیلی نال بده. چی می گیری جز AV ؟
اما همین طور ممکنه در Finally ارور داشته باشیم.

afsaneh.asp
چهارشنبه 22 مرداد 1393, 08:26 صبح
با تشکر بله شما درست حدس زدید خطا از sx1 بود و با Create اون مشکل حل شد.
ممنون