PDA

View Full Version : سوال: ارسال داده از بانک به textbox



mmdostd
جمعه 26 آذر 1395, 17:50 عصر
با سلام
من یه فرم طراحی کردم که قراره حضور و غیاب انجام بده
تو این فرم نمیخوام از datagridview استفاده کنم،بلکه میخوام اطلاعات فیلد هام داخل تکست باکس های مربوط به خودشون نمایش داده بشن
و زمانی که مثلا رو دکمه "حاضر" یا "غایب" کلیک کردیم،اطلاعات نفر بعدی تو تکست باکس ها نمایش داده بشه و همینطور تا آخرین نفر پیش بره
و در آخر هم یه پیغام مثل "حضور و غیاب به اتمام رسید" نمایش داده بشه
کسی از دوستان میدونه چطور باید اینکار رو انجام بدم؟

csharpcollegian
شنبه 27 آذر 1395, 12:52 عصر
سلام
شما یه دیتاتیبل و یه شمارنده رو به عنوان فیلدهای کلاس فرم مورد نظرت تعریف کن :


namespace BarnameNevis
{
public partial class Form1 : Form
{
private DataTable dtList;
private int counter;

public Form1()
{
InitializeComponent();
this.counter = 0;
}
}
}

بعدش لیست افرادی که قراره حضور غیاب بشن رو از دیتابیس بخون و بریز داخل dtList. بعدش در رویداد Form1_Load اولین رکورد جدولت رو در تکست باکس ها به نمایش بذار :


private void Form1_Load(object sender, EventArgs e)

{

textBox1.Text = this.dtList.Rows[this.counter]["Name"].ToString();

textBox2.Text = this.dtList.Rows[this.counter]["Family"].ToString();

}

بعدش رویداد دکمه حضور و غیبت رو به صورت زیر تنظیم کن :


private void button1_Click(object sender, EventArgs e)
{

//Sabt Gheibat Ya Hozure Fard Dar DataBase

this.counter++;
Form1_Load(null, null);
}

موفق باشی

mmdostd
یک شنبه 28 آذر 1395, 23:56 عصر
سلام
شما یه دیتاتیبل و یه شمارنده رو به عنوان فیلدهای کلاس فرم مورد نظرت تعریف کن :


namespace BarnameNevis
{
public partial class Form1 : Form
{
private DataTable dtList;
private int counter;

public Form1()
{
InitializeComponent();
this.counter = 0;
}
}
}

بعدش لیست افرادی که قراره حضور غیاب بشن رو از دیتابیس بخون و بریز داخل dtList. بعدش در رویداد Form1_Load اولین رکورد جدولت رو در تکست باکس ها به نمایش بذار :


private void Form1_Load(object sender, EventArgs e)

{

textBox1.Text = this.dtList.Rows[this.counter]["Name"].ToString();

textBox2.Text = this.dtList.Rows[this.counter]["Family"].ToString();

}

بعدش رویداد دکمه حضور و غیبت رو به صورت زیر تنظیم کن :


private void button1_Click(object sender, EventArgs e)
{

//Sabt Gheibat Ya Hozure Fard Dar DataBase

this.counter++;
Form1_Load(null, null);
}

موفق باشی

ممنونم
اما با این خطا رو به رو شدم :
http://s8.picofile.com/file/8279048950/1354.jpg

و اینکه فرمودید : "
بعدش لیست افرادی که قراره حضور غیاب بشن رو از دیتابیس بخون و بریز داخل dtList"
این کار رو چطور باید انجام بدم؟

csharpcollegian
دوشنبه 29 آذر 1395, 11:46 صبح
سلام
بله اشتباه از من بود، بایستی در رویداد Form_Load یک if قرار بدید تا شمارنده رو بررسی کنه و اجازه نده بیشتر از تعداد رکوردهای موجود در دیتاتیبل پیش بره :

private void Form1_Load(object sender, EventArgs e)
{
if (this.counter < this.dtList.Rows.Count)
{
textBox1.Text = this.dtList.Rows[this.counter]["Name"].ToString();
textBox2.Text = this.dtList.Rows[this.counter]["Family"].ToString();
}
else
{
MessageBox.Show("لیست به پایان رسید");
}
}

csharpcollegian
دوشنبه 29 آذر 1395, 13:03 عصر
و اینکه فرمودید : "
بعدش لیست افرادی که قراره حضور غیاب بشن رو از دیتابیس بخون و بریز داخل dtList
"
این کار رو چطور باید انجام بدم؟

با یه Select کاملا ساده از دیتابیس می تونید این کار رو انجام بدید. اگر با نحوه ارتباط با دیتابیس و انتقال اطلاعات به برنامه مشکل دارید می تونید از کد زیر استفاده کنید که این کار رو در ساده ترین حالت براتون انجام میده، اما پیشنهاد من اینه که در این زمینه مطالعه کنید و کاملا با مفاهیمش آشنا بشید. برای اینکار میتونید از کتاب جناب هاشمیان (http://www.parsbook.com/%DA%A9%D8%AA%D8%A7%D8%A8-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%B2%D8%A8%D8%A7%D9%86-%D9%88%DB%8C%DA%98%D9%88%D8%A7%D9%84-%D8%B3%DB%8C-%D8%B4%D8%A7%D8%B1%D9%BE) و همچنین فیلم های آموزشی این سایت (https://learnfiles.com/) استفاده کنید.
موفق باشید

DataTable dt = new DataTable();
string strCon = @"Your Connection String";
SqlConnection Con = new SqlConnection(strCon);
SqlCommand Cmd = new SqlCommand("Select * From Table_1", Con);
SqlDataAdapter DA = new SqlDataAdapter(Cmd);
DA.Fill(dt);

mmdostd
سه شنبه 30 آذر 1395, 00:55 صبح
با یه Select کاملا ساده از دیتابیس می تونید این کار رو انجام بدید. اگر با نحوه ارتباط با دیتابیس و انتقال اطلاعات به برنامه مشکل دارید می تونید از کد زیر استفاده کنید که این کار رو در ساده ترین حالت براتون انجام میده، اما پیشنهاد من اینه که در این زمینه مطالعه کنید و کاملا با مفاهیمش آشنا بشید. برای اینکار میتونید از کتاب جناب هاشمیان (http://www.parsbook.com/%DA%A9%D8%AA%D8%A7%D8%A8-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%B2%D8%A8%D8%A7%D9%86-%D9%88%DB%8C%DA%98%D9%88%D8%A7%D9%84-%D8%B3%DB%8C-%D8%B4%D8%A7%D8%B1%D9%BE) و همچنین فیلم های آموزشی این سایت (https://learnfiles.com/) استفاده کنید.
موفق باشید

DataTable dt = new DataTable();
string strCon = @"Your Connection String";
SqlConnection Con = new SqlConnection(strCon);
SqlCommand Cmd = new SqlCommand("Select * From Table_1", Con);
SqlDataAdapter DA = new SqlDataAdapter(Cmd);
DA.Fill(dt);



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


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Hozour_va_qiab
{
public partial class Form4 : Form
{

SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=hozourqiyab;Integrated Security=True");
DataView dv = new DataView();
SqlDataAdapter adp = new SqlDataAdapter();
DataSet ds = new DataSet();
public DataTable dtList= new DataTable();
DataTable dt = new DataTable();
private int counter;
public Form4()
{
InitializeComponent();
this.counter = 0;

}

private void Form4_Load(object sender, EventArgs e)
{
SqlCommand cmd = new SqlCommand("Select * From smoshakhasat_tbl", con); //برای ارسال دستورات به بانک
SqlDataAdapter DA = new SqlDataAdapter(cmd);
DA.Fill(dt);
if (this.counter < this.dtList.Rows.Count)
{
textBox1.Text = this.dtList.Rows[this.counter]["ID"].ToString();
textBox2.Text = this.dtList.Rows[this.counter]["stuname"].ToString();
textBox3.Text = this.dtList.Rows[this.counter]["stufamily"].ToString();
comboBox1.Text = this.dtList.Rows[this.counter]["darsname"].ToString();
textBox4.Text = this.dtList.Rows[this.counter]["barcode"].ToString();
}
else
{
MessageBox.Show("لیست به پایان رسید");
}
}
private void button1_Click(object sender, EventArgs e)
{
this.counter++;
Form4_Load(null, null);
}
}
}

codedeveloper
سه شنبه 30 آذر 1395, 10:20 صبح
دوست عزیز شما باید شرط Null بودن رو برای داده ها هم چک کنید، و در این صورت از String.Empty استفاده کنید،
این پیغام برای این هستش که شما فیلد نالی رو به ToString. ختم میکنید

csharpcollegian
سه شنبه 30 آذر 1395, 13:24 عصر
سلام
مشکل اینجاست که لیست افرادی که از دیتابیس خوندید رو به dtList منتقل نکردید. شما توسط شی دیتا اداپتر (DA.Fill(dt)) لیست افراد رو از دیتابیس خوندید و داخل دیتاتیبل dt قرار دادید ولی هیچ جایی اونو به dtList منتقل نکردید.

csharpcollegian
سه شنبه 30 آذر 1395, 13:59 عصر
در ضمن اگر قصد دارید اطلاعات رو در رویداد Form_Load از دیتابیس بخونید بایستی یه مقدار کدتون رو تغییر بدید، در غیر اینصورت هر بار که button1 رو بزنید تا نفر بعدی رو نمایش بده، اطلاعات رو مجددا از دیتابیس میخونه !

namespace BarnameNevis
{
public partial class Form1 : Form
{

DataTable dtList;
int counter;

public Form1()
{
InitializeComponent();
this.dtList = new DataTable();
this.counter = 0;
}

private void Form1_Load(object sender, EventArgs e)
{
string strCon = @"Your Connection String";
SqlConnection Con = new SqlConnection(strCon);
SqlCommand Cmd = new SqlCommand("Select * From Table_1", Con);
SqlDataAdapter DA = new SqlDataAdapter(Cmd);
DA.Fill(this.dtList);
ReadNext();
}

private void ReadNext()
{
if (this.counter < this.dtList.Rows.Count)
{
textBox1.Text = this.dtList.Rows[this.counter]["ID"].ToString();
textBox2.Text = this.dtList.Rows[this.counter]["Name"].ToString();
}
else
MessageBox.Show("لیست به پایان رسید");
}

private void button1_Click(object sender, EventArgs e)
{
//Sabt Gheibat Ya Hozure Fard Dar DataBase
.
.
.
this.counter++;
ReadNext();
}

}
}
موفق باشید

aliramazani
دوشنبه 06 دی 1395, 08:16 صبح
از تکنولوژی LINQ و FOREACH استفاده کن

hamed_611
دوشنبه 06 دی 1395, 23:34 عصر
این کد رو هم امتحان کن .. 143907