PDA

View Full Version : ساخت کانکشن استرینگ داخل کلاس بطوری که اسم پوشه بانک را از داخل برنامه بگیرد



aradhirad
چهارشنبه 15 بهمن 1399, 17:50 عصر
سلام اگر لطف کنین جواب بدین یک عمر دعا گو هستم
بد جورگیر کردم

من کانکشن استرینگم رو داخل کلاس تعریف کردم و داخل فرم فراخوانی میکنم .
میخوام
public static string con = ("Data Source =.;AttachDBFilename=|DataDirectory|\\"+ s + "\\dbhazine.mdf;Initial Catalog = dbhazine; Integrated Security = True");



اونجا که s نوشتم رو میخوام از داخل فرم تعیین بشه
با نوجه به پوشه ی سال مالی مثلا

aradhirad
چهارشنبه 15 بهمن 1399, 17:51 عصر
در واقع نمیدونم از داخل فرم چجوری فراخوانی کنم
لطفا اگه میشه با کد بفرستین تا متوجه بشم ممنونم

the king
چهارشنبه 15 بهمن 1399, 19:07 عصر
سلام اگر لطف کنین جواب بدین یک عمر دعا گو هستم
بد جورگیر کردم

من کانکشن استرینگم رو داخل کلاس تعریف کردم و داخل فرم فراخوانی میکنم .
میخوام
public static string con = ("Data Source =.;AttachDBFilename=|DataDirectory|\\"+ s + "\\dbhazine.mdf;Initial Catalog = dbhazine; Integrated Security = True");



اونجا که s نوشتم رو میخوام از داخل فرم تعیین بشه
با نوجه به پوشه ی سال مالی مثلا
s متغیر ئه، پس یا باید پارامتر باشه یا قبلا مقدار دهی بشه.
اگر con یک متد باشه میتونه s رو به عنوان پارامتر ورودی بگیره :

class Class1
{
public static string con(string s)
{
return ("Data Source =.;AttachDBFilename=|DataDirectory|\" + s + "\\dbhazine.mdf;Initial Catalog = dbhazine; Integrated Security = True");
}

مثلا :

private void button1_Click(object sender, EventArgs e)
{
var connection = Class1.con("1399");
}


وگرنه con میتونه یک مشخصه فقط خواندنی باشه و مقدار s رو مجزا مشخص کنه :

class Class1
{
public static string s = "";

public static string con
{
get
{
return ("Data Source =.;AttachDBFilename=|DataDirectory|\" + s + "\\dbhazine.mdf;Initial Catalog = dbhazine; Integrated Security = True");
}
}
}
یا :

class Class1
{
public static string s = "";

public static string con => ("Data Source =.;AttachDBFilename=|DataDirectory|\" + s + "\\dbhazine.mdf;Initial Catalog = dbhazine; Integrated Security = True");
}

مثلا :

private void button1_Click(object sender, EventArgs e)
{
Class1.s = "1399";
var connection = Class1.con;
}

aradhirad
پنج شنبه 16 بهمن 1399, 00:53 صبح
خیلی خیلی خیلی ممنون

فقط یه مسءله حل نشده برام

اونم اینکه به جای "data" اگه این عدد رو از یه تکس باکس بخوام بگیرم باید چیکار کنم؟

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

SqlConnection con = new SqlConnection(Class1.con1("data"));


به جای data مثلا از یه تکس باکس که تو فرم اصلی دارم و داره سال مالی رو نشون میده بخونه

the king
پنج شنبه 16 بهمن 1399, 01:16 صبح
خیلی خیلی خیلی ممنون

فقط یه مسءله حل نشده برام

اونم اینکه به جای "data" اگه این عدد رو از یه تکس باکس بخوام بگیرم باید چیکار کنم؟


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

SqlConnection con = new SqlConnection(Class1.con1("data"));


به جای data مثلا از یه تکس باکس که تو فرم اصلی دارم و داره سال مالی رو نشون میده بخونه
فرم اصلی تون یعنی این کد در یک کلاس دیگه است؟ در اون فرم اصلی مقدار رو از TextBox ئه کپی کنید در یک فیلد public static ، مثلا اگر فرم اصلی تون Form1 باشه، در همون کلاس فرم اصلی یک فیلد public static string s بسازید و مقدار داخل TextBox.Text رو داخل اون فیلد s کپی کنید، فرضا زمانی که رخداد TextBox.TextChanged رخ میده.
حالا در همه جای برنامه با Form1.s به اون مقدار دسترسی دارید و می توانید جای "data" از Form1.s استفاده کنید.

aradhirad
پنج شنبه 16 بهمن 1399, 01:23 صبح
1
2
3
4
5
6

private void button1_Click(object sender, EventArgs e)
{
Class1.s = "1399";
var connection = Class1.con;
}






این کذ که فرمودین تو رویداد ها کار میکنه ولی من بالای برنامه کانکشن هر فرم رو تعریف میکنم اونجا وقتی class1 رو میزنم نمیاره که s رو مقدار دهی کنم

aradhirad
پنج شنبه 16 بهمن 1399, 01:26 صبح
ببینید بذار اینجوری بگم

یه کلاس به پروژه ادد کردم که این کد توشه
classClass1{
public static string con1(string s)
{
return ("Data Source =.;AttachDBFilename=|DataDirectory|" + s + "\\dbhazine.mdf;Initial Catalog = dbhazine; Integrated Security = True");
}

بعد فرض کنین برنامه من یک قرم داره که قراره کانکشن استرینگ رو بالای برنامه تعریف کنم و در همه جای برنامه دسترسی داشته باشم
به این صورت:
:

SqlConnection con = new SqlConnection(Class1.con1("data"));

خالا مسله اینه که اون دیتا رو باید از مثلا لیبل روی فرم بخونه

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

میخوام سال مالی تعریف کنم و اسم پوشه ی سال روی فرم هست و از رو اون باید بخونم

aradhirad
پنج شنبه 16 بهمن 1399, 01:33 صبح
من اگر کانکشن رو توی رویداد ها بنویسم مشکل حل میشه ولی میخوام یه بار بالا بنویسم و تو کل فرم ببینمش

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

aradhirad
پنج شنبه 16 بهمن 1399, 01:39 صبح
public Form1()
{
InitializeComponent();
}
public static string n;

ببینین اوم بالا n رو تعریف کردم ولی همونجا باید مقدار دهی بشه رو این قسمتش موندم

aradhirad
پنج شنبه 16 بهمن 1399, 10:03 صبح
مشکل جل شد ممنونم از جناب the king

برای بقیه عزیزان میذارم شاید به کار بیاد
class Class1
{
public static string mm = "";
public static string con1(string s)
{
return ("Data Source =.;AttachDBFilename=|DataDirectory|\" + s + "\\test.mdf; Initial Catalog = test; Integrated Security = True");
}
}

یک فرم اولیه تعریف کردم و داخل اون :
Class1.mm = textBox1.Text;

و حالا در فرم اصلی
SqlConnection con = new SqlConnection(Class1.con1(Class1.mm));