PDA

View Full Version : دسترسي به متغيرهاي تعريف شده در يك پرو‍‍‍‍‍‍‍‍‍‍ژه در پروژه ي ديگر



meri_rad
شنبه 28 فروردین 1389, 14:06 عصر
سلام دوستان
يه پروژه دارم كه براي درست كردن يه گزارش از طريق كريستال ريپورت از ديتا ريدر استفاده كردم ، حالا توي پروژه ي class به يه متغيرهاي پروژه ي اصلي نياز دارم چطوري مي تونم به اين متغيرها دسترسي پيدا كنم

mohammad diba
شنبه 28 فروردین 1389, 14:13 عصر
سلام دوست عزیز اوا باد پروژه ات رو به پروژه فعلی add کنی بعد رفرنس بدی بعد اگه متغیرات استاتیک یا عمومی باشی می تونی بهش دسترسی داشته باشی

meri_rad
شنبه 28 فروردین 1389, 14:23 عصر
سلام دوست عزیز اوا باد پروژه ات رو به پروژه فعلی add کنی بعد رفرنس بدی بعد اگه متغیرات استاتیک یا عمومی باشی می تونی بهش دسترسی داشته باشی
مي شه بيشتر توضيح بدين
منظورتون از add كردن پروژه چيه؟(هر دوي پروژه هاي من تو يه Solution هستش)

Moslemu
شنبه 28 فروردین 1389, 14:38 عصر
سلام.
خوب اگه هر دو پروژه تو يه Solution هست ديگه add نميخواد.
فقط بايد متغيرهايي كه مي خواي توي پروژه ي ديگه ازشون استفاده كني public تعريف كني.

meri_rad
شنبه 28 فروردین 1389, 14:55 عصر
سلام.
خوب اگه هر دو پروژه تو يه Solution هست ديگه add نميخواد.
فقط بايد متغيرهايي كه مي خواي توي پروژه ي ديگه ازشون استفاده كني public تعريف كني.
متغيرم رو public تعريف كردم


public static string strqry = "";

اما وقتي تو class1 كه تو پروژه cls هست مي خوام استفادهد كنم اونو تمي شناسه ( حتي اسم پروژه ي اصلي رو هم نشون نميده كه از دستور

main.frmsrch.strqry استفاده كنم

ASKaffash
شنبه 28 فروردین 1389, 15:08 عصر
سلام.
خوب اگه هر دو پروژه تو يه Solution هست ديگه add نميخواد.
فقط بايد متغيرهايي كه مي خواي توي پروژه ي ديگه ازشون استفاده كني public تعريف كني.
سلام
در یک Solution بودن به معنی دسترسی به یکدیگر داشتن نیست . پس باید DLL یک EXE در دیگری که نیاز است باید Refrence شود ولی باید یک کلاس ایجاد کنید که DataReader را از طریق یک متد مثلا Static ارائه دهد

saeedalg
شنبه 28 فروردین 1389, 15:12 عصر
در هر صورت بايد پرو‍ه رو Add كني برو رو پرو‍ژت (Icon سبز رنگش) تو Solution Explorer كليك كن يه References داره روش كليك راست كن،‌Add refrences رو بزن پنجره اي باز ميشه برو رو تب Projects، حالا پرو‍ه اي كه ميخواي ازش استفاده كني و در همين Solution هست رو انتخاب ميكني، اگر چيزي نبود برو تو تب Browse و فايل ساخته شده (معمولا dll) مربوطه رو Add كن.

meri_rad
شنبه 28 فروردین 1389, 16:21 عصر
در هر صورت بايد پرو‍ه رو Add كني برو رو پرو‍ژت (Icon سبز رنگش) تو Solution Explorer كليك كن يه References داره روش كليك راست كن،‌Add refrences رو بزن پنجره اي باز ميشه برو رو تب Projects، حالا پرو‍ه اي كه ميخواي ازش استفاده كني و در همين Solution هست رو انتخاب ميكني، اگر چيزي نبود برو تو تب Browse و فايل ساخته شده (معمولا dll) مربوطه رو Add كن.
ممنون از راهنماييتون
من اين راه را امتحان كردم حالا مي تونم به متغيرم دسترسي پيدا كنم اما وقتي مي خوام كه پروژه رو Build كنم ارور ميده
اين كد class1.cs


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data .SqlClient ;
using System.Data.OleDb;
namespace cls_dtr
{
public class Class1
{
private string ORDER1_QUERY =main.frm.strqry;
public static IDataReader GetCustomersUsingOleDb()
{
SqlConnection SQLCon = new SqlConnection("Data Source=.;InitialCatalog=Database1.mdf;Integrated Security=True;User Instance=True");
SQLCon.Open();
SqlCommand SQLCommand = new SqlCommand(ORDER1_QUERY, SQLCon);
IDataReader iDataR = SQLCommand.ExecuteReader();
return iDataR;
}
}
}

اينام اروراشه


Error 2 An object reference is required for the non-static field, method, or property 'cls_dtr.Class1.ORDER1_QUERY' C:\Documents and Settings\Dear-User\Desktop\main_C#\main\cls_dtr\Class1.cs 18 52 cls_dtr




Error 3 The type 'System.Windows.Forms.Form' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. C:\Documents and Settings\Dear-User\Desktop\main_C#\main\cls_dtr\Class1.cs 10 18 cls_dtr

mahmoodramzani
شنبه 28 فروردین 1389, 17:57 عصر
ممنون از راهنماييتون
من اين راه را امتحان كردم حالا مي تونم به متغيرم دسترسي پيدا كنم اما وقتي مي خوام كه پروژه رو Build كنم ارور ميده
اين كد class1.cs


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data .SqlClient ;
using System.Data.OleDb;
namespace cls_dtr
{
publicclassClass1
{
privatestring ORDER1_QUERY =main.frm.strqry;
publicstaticIDataReader GetCustomersUsingOleDb()
{
SqlConnection SQLCon = newSqlConnection("Data Source=.;InitialCatalog=Database1.mdf;Integrated Security=True;User Instance=True");
SQLCon.Open();
SqlCommand SQLCommand = newSqlCommand(ORDER1_QUERY, SQLCon);
IDataReader iDataR = SQLCommand.ExecuteReader();
return iDataR;
}
}
}
اينام اروراشه


Error 2 An object reference is required for the non-static field, method, or property 'cls_dtr.Class1.ORDER1_QUERY' C:\Documents and Settings\Dear-User\Desktop\main_C#‎‎\main\cls_dtr\Class1.cs 18 52 cls_dtr



Error 3 The type 'System.Windows.Forms.Form' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. C:\Documents and Settings\Dear-User\Desktop\main_C#‎‎\main\cls_dtr\Class1.cs 10 18 cls_dtr


Error 2:
شما توی یه متد که استاتیک هست از متغیر غیر استاتیک استفاده کردی واسه همین ارور میده.

meri_rad
شنبه 28 فروردین 1389, 20:28 عصر
Error 2:
شما توی یه متد که استاتیک هست از متغیر غیر استاتیک استفاده کردی واسه همین ارور میده.
ممنون از كمكت
دليل ارور پيدا كردم ، به خاطر اين بود كه System.windows.form بايد add refrence مي كردم
يه سوال ديگه :
من توي كلاسي كه براي datareader تعريف شده از متغير strqry كه تو فرم frmتو پروژه اصلي تعريف شده استفاده مي كنم
حالا وقتي كريستال ريپورت اضافه مي كنم ، وقتي كه كلاس رو به كريستال اضافه مي كنم تو مرحله ي بعدش اسم فيلدام رو بهم ميده ، اما چون من كوئريم رو از متغير strqry مي گيرم ديگه هيچ فيلدي رو بهم نميده


SqlCommand SQLCommand = new SqlCommand(main.frm.strqry, SQLCon);

حالا مي خواستم ببينم تحت اين شرايط من مي تونم از اين روش(يعني ديتاريدر ) بازم استفاده كنم يا بايد از روشاي ديگه اي مثل ديتاست استفاده كنم