نمایش نتایج 1 تا 9 از 9

نام تاپیک: کریستال ریپورت ، SQL Server ، وی بی دات نت

  1. #1

    کریستال ریپورت ، SQL Server ، وی بی دات نت

    سلام . من یه connection ساخنم و با اون به sql وصل می شم و insert,update و... رو انجام می دم و مشکلی هم نداره اما حالا که می خوام لا کریستال ریپورت از table داخل sql یپورت بگیرم پنجره login باز می شه و login error می ده و دسترسی نداره . با بانک access این مشکلات رو ندارم . کمکککککککککککککککککک

  2. #2
    sql یه بانک داده بزرگ و درعین حال امنه شما باید قبلا به عنوان یه user اونجا تعریف شده باشی که مثلا اجازه دسترسی به یه بانک داده رو داشته باشی و...

  3. #3
    کاربر دائمی
    تاریخ عضویت
    آذر 1383
    محل زندگی
    تهران
    پست
    1,021

    Lightbulb

    سلام

    ببین این پیغام عادیه و برای همه میاد شما میتونی از طریق کد زیر این پیغامو برداری:
            Dim mylogOnInfo As New CrystalDecisions.Shared.TableLogOnInfo

    With mylogOnInfo
    .ConnectionInfo.ServerName = ServerName
    .ConnectionInfo.DatabaseName = DatabaseName
    .ConnectionInfo.UserID = "sa"
    .ConnectionInfo.Password = Password
    End With

    این کد رو در Form_load گزارشت قرار بده.

    در پناه حق موفق باشید و پرتوان
    آخرین ویرایش به وسیله Hamedm : چهارشنبه 22 تیر 1384 در 12:18 عصر

  4. #4
    سلام
    جواب Hamedm کاملا درسته. من پیشنهاد می کنم موارد مورد نیاز توی کد بالا از طریق Dynamic Pripertyها توی فایل config برنامه به صورت یک کلید ذخیره اش کنی تا وقتی exe برنامه ات رو یک جای دیگه می بری بتونی راحت اونا رو بدون نیاز به سورس تغییرش بدی.

  5. #5
    اولا که ممنونم از همه روستان که جواب دادن . دوما اگر sa پسورد نداشته باشه چی؟ دوما mehrdotnet عزیز اگه میشه یه خورده بیشتذ توضیح بدین؟ اگه نخوام از sa استفاده کنم چی؟

    باز هم ممنونم دوستان

  6. #6
    باز هم سلام
    اولا اگر sa پسورد نداشته باشه می تونی یا قسمت مربوط به اون رو اصلا وارد نکنی یا اینکه پسورد را مساوی "" قرار بدی (یعنی خالی)
    برای دوما هم باید بگم که اولا شما برای اینکه بخواین یک ارتباط بین برنامه تون با SQL Server برقرار کنید نیاز به یک User توی SQL Server دارین که حق دسترسی به منابع مورد نظر داشته باشه و شما بتوانید از طریق اون از برنامه به پایگاه لاگین کنین و از اون استفاده کنین. sa یک کابر پیش فرضه که توی تمام SQL Server ها وجود داره و هنگام نصب SQL ساخته و پسورد دهی می شه. این User بطور پیش فرض به همه منابع موجود در SQL دسترسی داره.

    به هر حال شما باید حتما برای دسترسی به منابع SQL یک User توی اون داشته باشین شما مجبور نیستین حتما از sa استفاده کنین بلکه می تونین خودتون به هر تعداد که می خواین توی SQL یوزر بسازین و برای اونها سطح دسترسی تعیین کنین البته باید این رو دقت کنین که اگه DB برنامه رو به SQL Server دستگاه دیگری انتقال دادین مجبورید دوباره این User را با همون سطح دسترسی توی اون تعریف کنین. پس می بیبنید که آسون ترین راه استفاده از sa هستش که روی تموم سیستم های دارای SQL موجوده.

    دلیل اینکه می گم از Dynamic Property ها استفاده کنین اینه که اگه شما برنامه تون را به یک شبکه دیگه منتقل کنین Server Name شما ممکنه تغییر کنه و یا اگه یک User با همون سطح دسترسی مورد نظر شما روی DB Server وجود داشته باشه و بخواین از اون استفاده کنین ، در صورتی که برنامه بدون DProperty نوشته شده باشه و بخواین این تغییرات رو اعمال کنین باید مجددا سورس رو باز کرده دستکاری کنین و دوباره اسمبلی اون رو رو سیستم ها نصب کنین بنابراین در ازای هر تغییر نیاز به دستکاری سورس دارین. مثلا فرض کنین که شما اسم سیستم تون MySys باشه و روی سیستم خودتون توی SQL یوزری به نام mmuser دارین و از اون استفاده کردین. حالا اگه برنامه تون رو به دوستتون بدین تا روی سیستم خودش نصب کنه و یا یانک اطلاعاتی تون رو توی یک شبکه روی سیستم دیگه ببرین دیگه اسم سیستم MySys نیست و یا اگه دوستتون بخواد از ّfriend1 که سطح دسترسی به بانک داره استفاده کنه باید بره سورس رو تغییر بده.

    استفاده از Dynamic Property ها این کار رو بسیار راحت می کنه چون مواردی که Dynamic تعریف می شه توی فایل Config برنامه مقدارشون ذخیره می شه.

    مثلا اگه بخواین text یک label رو به صورت Dynamic تعریف کنین. می تونین کد زیر را در قسمت appSettings فایل Config کد زیر رو بنویسین :

    add key="KeyName" value=yourvalue

    این کد یک کلید را داخل فایل Config می سازه و شما می تونین هر جای برنامه که بخواین از اون استفاده کنین مثلا اگه بخواین مقدار این کلید را توی یک Label بنویسید ، کافیه داخل برنامه جای مورد نظرتون کد زیر رو وارد کنید :

    Dim configurationAppSettings As System.Configuration.AppSettingsReader = New System.Configuration.AppSettingsReader
    LabelName.Text = CType(configurationAppSettings.GetValue("KeyName", GetType(System.String)), String)


    با این کار مقداری که توی فایل Config مشخص کرده بودین قابل دسترسی است. و از طرفی فایل Config برنامه فایلی که به راحتی توسط ساده ترین Text Editor ها مثل NotePad قابل باز کردن و تغییر دادنه.
    پس اگه شما Server Name رو هم به صورت Dynamic Property تعریف کنین پس از انتقال برنامه کافیه مقدار کلید جدید اون رو توی فایل Config تغییر بدین و نیازی به سورس ندارین.

    ببخشین که سرتون رو درد آوردم امیدوارم این توضیحات کافی باشه.

  7. #7
    فوق العاده از همگی منونم

  8. #8
    کاربر دائمی آواتار hmm
    تاریخ عضویت
    مهر 1382
    محل زندگی
    ایران - یزد
    پست
    1,229
    استفاده از فایل config به دلیل اینکه همه میتونن این فایل رو باز کنن و رمز اصلی سیستم رو بخونن از امنیت کافی برخوردار نیست بهرتره از یه یوزر و پسورد خاص استفاده بشه که دیگه مشکلی پیش نیاد

  9. #9

    نقل قول: کریستال ریپورت ، SQL Server ، وی بی دات نت

    در اینجا دو حال پیش می آید یا گزارش subreport , هست یا داکیومنت معمولی
    ابندا باید داکیومنت گزارش و کانکشن اینفو را به توابع بدهد
    نحوه پر کردن connectionInfo




    ConnectionInfo ConnectionInfoRpt = newConnectionInfo();
    ConnectionInfoRpt.IntegratedSecurity =
    true;
    ConnectionInfoRpt.DatabaseName =
    "database";
    ConnectionInfoRpt.Password =
    "pass";
    ConnectionInfoRpt.UserID =
    "user";
    ConnectionInfoRpt.ServerName =
    SystemInformation.ComputerName.ToString();
    Finassl rpt = newFinassl();
    حالا نوبت به ارسال هم داکیومنت و کاننکشن است
    ApplyLogOnInfoForSubreports(rpt, ConnectionInfoRpt);

    تابع را فراخوانی می کنیم
    privatevoid ApplyReportLogon(CrystalDecisions.CrystalReports.E ngine.ReportDocument RptYears, ConnectionInfo sa)
    {
    foreach (CrystalDecisions.CrystalReports.Engine.Table tablex in RptYears.Database.Tables)
    {
    tablex.LogOnInfo.ConnectionInfo.AllowCustomConnect ion =
    true;
    TableLogOnInfo tablelog = tablex.LogOnInfo;
    tablelog.ConnectionInfo = sa;
    tablex.ApplyLogOnInfo(tablelog);
    }
    }

    حال اگر فرم شما ساب ریپورت داشته باشد فرم ریپورت خود را به جای ارسال به تابع فوق به تابع زیر ارسال می نمایید

    privatevoid ApplyLogOnInfoForSubreports(CrystalDecisions.Cryst alReports.Engine.ReportDocument rpt, ConnectionInfo ConnectionInfoRpt)
    {


    Sections Sections = rpt.ReportDefinition.Sections;
    foreach (Section section in Sections)
    {
    ReportObjects reportObjects = section.ReportObjects;
    foreach (ReportObject reportObject in reportObjects)
    {
    if (reportObject.Kind == ReportObjectKind.SubreportObject)
    {
    var subreportobject = (SubreportObject)reportObject;
    ReportDocument SubReportDocument = subreportobject.OpenSubreport(subreportobject.Subr eportName);
    ApplyReportLogon(SubReportDocument, ConnectionInfoRpt);
    }
    }
    }


    }










    امیدوارم تونسته باشم مشکلی را حل کرده باشم

تاپیک های مشابه

  1. تفاوت Response.Redirect با Server.Transfer و Server.Execute
    نوشته شده توسط odiseh در بخش Classic ASP
    پاسخ: 2
    آخرین پست: یک شنبه 18 بهمن 1388, 20:13 عصر
  2. Link Server & Import Data In SQL Server 2000
    نوشته شده توسط A.Farzin در بخش SQL Server
    پاسخ: 3
    آخرین پست: شنبه 01 دی 1386, 13:53 عصر
  3. طای HTTP/1.1 500 Server Error Server: Microsoft-IIS/5.1 Date...
    نوشته شده توسط nak303 در بخش PHP
    پاسخ: 0
    آخرین پست: سه شنبه 25 بهمن 1384, 10:02 صبح
  4. پیغام خطا پس از نصبSQL Server 2000 روی Windows Server 2003
    نوشته شده توسط ravanfar در بخش SQL Server
    پاسخ: 1
    آخرین پست: پنج شنبه 03 دی 1383, 23:41 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •