PDA

View Full Version : Value cannot be null. Parameter name: dataSource



mth_sh89
شنبه 19 مرداد 1387, 02:08 صبح
سلام

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

ولی توی خطی که نوشتم
iDTextBox.DataBindings.Add("Text", objDataView, "ID");
error میده:گریه::گریه::گریه:
اینم کد برنامه


public partial class Form1 : Form
{
private const string _Commandtext = "SELECT ID,FirstName,LastName,Address,TelNumber FROM db1";
private const string _ConnectionString = "Server=localhost;Database=db1;User ID=Admin;Password=;";
SqlConnection objConnection;
SqlDataAdapter objDataAdapter;
DataSet objDataSet;
DataView objDataView;
CurrencyManager objCurrencyManager;
private void FillDataSetAndView()
{
objDataAdapter = new SqlDataAdapter();
objDataSet = new DataSet();
objDataAdapter.Fill(objDataSet, "db1");
objDataView = new DataView(objDataSet.Tables["db1"]);
objCurrencyManager = (CurrencyManager)(this.BindingContext[objDataView]);

}
private void BindFields()
{
iDTextBox.DataBindings.Clear();
firstNameTextBox.DataBindings.Clear();
lastNameTextBox.DataBindings.Clear();
addressTextBox.DataBindings.Clear();
telNumberTextBox.DataBindings.Clear();

iDTextBox.DataBindings.Add("Text", objDataView, "ID");
firstNameTextBox.DataBindings.Add("Text", objDataView, "FirstName");
lastNameTextBox.DataBindings.Add("Text", objDataView, "LastName");
addressTextBox.DataBindings.Add("Text", objDataView, "Address");
telNumberTextBox.DataBindings.Add("Text", objDataView, "TelNumbre");
statusStrip1.Text = "Ready";

}
public Form1()
{
objConnection = new SqlConnection(_ConnectionString);
objDataAdapter = new SqlDataAdapter(_Commandtext, objConnection);
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the 'db1DataSet.Moshtarakin' table. You can move, or remove it, as needed.
this.moshtarakinTableAdapter.Fill(this.db1DataSet. Moshtarakin);

BindFields();

FillDataSetAndView();


}

private void BtnClear_Click(object sender, EventArgs e)
{

}


}

tthenry14plus
شنبه 19 مرداد 1387, 02:19 صبح
اسم جدولتونو قبل از اسم فیلد جا انداخیتن :


iDTextBox.DataBindings.Add("Text", objDataView, "db1.ID");

و همین طور در مورد سایر textBox هاتون اینکارو انجام بدید ...

mth_sh89
شنبه 19 مرداد 1387, 03:06 صبح
من این تغییرات رو اعمال کردم نشد باز روی همون خط error میده


iDTextBox.DataBindings.Add("Text", objDataView, "db1.ID");
firstNameTextBox.DataBindings.Add("Text", objDataView, "db1.FirstName");
lastNameTextBox.DataBindings.Add("Text", objDataView, "db1.LastName");
addressTextBox.DataBindings.Add("Text", objDataView, "db1.Address");
telNumberTextBox.DataBindings.Add("Text", objDataView, "db1.TelNumbre");

mth_sh89
شنبه 19 مرداد 1387, 14:37 عصر
کی میتونه مشکل این کد رو بگه؟

tthenry14plus
یک شنبه 20 مرداد 1387, 17:23 عصر
یادم رفت بگم مشکلی که در کد شما هست اینه که شما در بایند کردن بجای استفاده از objDataSet از objDataView استفاده کردید یعنی کدتون باید اینطوری باشه :


iDTextBox.DataBindings.Add("Text", objDataSet , "db1.ID");

mth_sh89
پنج شنبه 24 مرداد 1387, 13:12 عصر
عزیز واقعا متشکرم از اینکه حوصله به خرج میدی و منو راهنمایی میکنی:قلب::بوس:

بازم مشکلش حل نشد .ببین من توی فایل اکسسم فیلد ای دی رو auto number کردم این نمیتونه مشکل ساز باشه؟؟؟

mth_sh89
پنج شنبه 24 مرداد 1387, 13:37 عصر
ایا نیاز نیست تبدیلی چیزی بشه؟؟
اخه ما این قسمت کد نوشتیم :

iDTextBox.DataBindings.Add("Text", objDataView, "db1.ID");

وقتی آدم به مشکلی میخوره هزار جور احتمال به ذهنش میرسه

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

mth_sh89
پنج شنبه 24 مرداد 1387, 20:35 عصر
من فایل اکسس رو تغییر دادم و یه پروژه ی جدید نوشتم
حالا از این خط خطا میگیره

objDataAdapter.Fill(objDataSet, "db1");
میگه:
The SelectCommand property has not been initialized before calling 'Fill'.
اینم کد کامل

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace WindowsApplication3
{
public partial class Form1 : Form
{

private const string _Commandtext = "SELECT ID,FirstName,LastName,Address,TelNumber FROM db1";
private const string _ConnectionString = "Server=localhost;Database=db1;User ID=Admin;Password=;";
SqlConnection objConnection;
SqlDataAdapter objDataAdapter;
DataSet objDataSet;
DataView objDataView;
CurrencyManager objCurrencyManager;
private void FillDataSetAndView()
{
objDataAdapter = new SqlDataAdapter();
objDataSet = new DataSet();
objDataAdapter.Fill(objDataSet, "db1");
objDataView = new DataView(objDataSet.Tables["db1"]);
objCurrencyManager = (CurrencyManager)(this.BindingContext[objDataView]);

}
private void BindFields()
{
iDTextBox.DataBindings.Clear();
firstNameTextBox.DataBindings.Clear();
lastNameTextBox.DataBindings.Clear();
addressTextBox.DataBindings.Clear();
telNumberTextBox.DataBindings.Clear();

iDTextBox.DataBindings.Add("Text", objDataSet, "db1.ID");
firstNameTextBox.DataBindings.Add("Text", objDataSet, "db1.FirstName");
lastNameTextBox.DataBindings.Add("Text", objDataSet, "db1.LastName");
addressTextBox.DataBindings.Add("Text", objDataSet, "db1.Address");
telNumberTextBox.DataBindings.Add("Text", objDataSet, "db1.TelNumbre");
statusStrip1.Text = "Ready";


}
public Form1()
{
InitializeComponent();
objConnection = new SqlConnection(_ConnectionString);
objDataAdapter = new SqlDataAdapter(_Commandtext, objConnection);
}


private void Form1_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the 'db1DataSet.Moshtarakin' table. You can move, or remove it, as needed.
this.moshtarakinTableAdapter.Fill(this.db1DataSet. Moshtarakin);
FillDataSetAndView();
BindFields();

}
}
}

hdv212
پنج شنبه 24 مرداد 1387, 21:28 عصر
The SelectCommand property has not been initialized before calling 'Fill'
در این متد، که من ذکر کردم شما خاصیت objDataAdapter.SelectCommand.CommandText رو تنظیم نکردید، باید قبل از متد Fill اون رو تنظیم کنید :

private void FillDataSetAndView()
{
objDataAdapter = new SqlDataAdapter();
objDataSet = new DataSet();
objDataAdapter.Fill(objDataSet, "db1");
objDataView = new DataView(objDataSet.Tables["db1"]);
objCurrencyManager = (CurrencyManager)(this.BindingContext[objDataView]);

}

ظاهرا بدین شکل باید بنویسید :

private void FillDataSetAndView()
{
objDataAdapter = new SqlDataAdapter();
objDataSet = new DataSet();
objDataAdapter.SelectCommand.CommantText = Commandtext;
objDataAdapter.Fill(objDataSet, "db1");
objDataView = new DataView(objDataSet.Tables["db1"]);
objCurrencyManager = (CurrencyManager)(this.BindingContext[objDataView]);

}
در مورد سوال اولتون، اگه هنوز حل نشده، لطفا بگو وقتی خطا میگیره، روی کدوم آبجکت میگیره ؟ اگه روی objDataView میگیره، این پارامتر رو امتحان کنید :

objDataView.Table

mth_sh89
جمعه 25 مرداد 1387, 00:17 صبح
ممنون مشکل دومی حل شد ولی اولی نه هنوز حل نشده

این خطا رو میده :
Value cannot be null.
Parameter name: dataSource

واین خط رو زرد میکنه

iDTextBox.DataBindings.Add("Text", objDataSet, "db1.ID");

hdv212
جمعه 25 مرداد 1387, 02:00 صبح
قسمت دوم صحبتم رو انجام دادی ؟

در مورد سوال اولتون، اگه هنوز حل نشده، لطفا بگو وقتی خطا میگیره، روی کدوم آبجکت میگیره ؟ اگه روی objDataView میگیره، این پارامتر رو امتحان کنید :

objDataView.Table

mth_sh89
جمعه 25 مرداد 1387, 18:18 عصر
چون کد کامل رو نذاشته بودید دقیقا متوجه نشدم باید چیکار کنم

باید کجا رو تغییر بدم؟؟

منظرتون اینه که این کارو بکنم؟

iDTextBox.DataBindings.Add("Text", objDataView.Table, "ID");

hdv212
جمعه 25 مرداد 1387, 20:01 عصر
آره، دقیقا همینطوره، درست شد ؟

mth_sh89
شنبه 26 مرداد 1387, 00:58 صبح
نه متاسفانه فقط خطاش عوض شد

تغییر کد

private void BindFields()
{
iDTextBox.DataBindings.Clear();
firstNameTextBox.DataBindings.Clear();
lastNameTextBox.DataBindings.Clear();
addressTextBox.DataBindings.Clear();
telNumberTextBox.DataBindings.Clear();

iDTextBox.DataBindings.Add("Text",objDataView.Table,"ID");
firstNameTextBox.DataBindings.Add("Text", objDataView.Table, "db1.FirstName");
lastNameTextBox.DataBindings.Add("Text", objDataView.Table, "db1.LastName");
addressTextBox.DataBindings.Add("Text", objDataView.Table, "db1.Address");
telNumberTextBox.DataBindings.Add("Text", objDataView.Table, "db1.TelNumbre");
statusStrip1.Text = "Ready";
}

خطای جدیدی که میگیره اینه:
Object reference not set to an instance of an object.

mth_sh89
یک شنبه 27 مرداد 1387, 00:20 صبح
با راهنمایی هایی که داشتین میکردین امیدم به درست شدنش برگشت اگه میشه ادامه بدین

hdv212
یک شنبه 27 مرداد 1387, 02:25 صبح
خطای جدیدی که میگیره اینه:
Object reference not set to an instance of an object
وقتی این خطا اتفاق میفته، با ماوس روی متغیر objDataView برو ببین آیا مقدارش null هست یا (برای اینکه بفهمیم این خطا مربوط به اونه یا نه)، اگر اینطوریه، ببین این آبجکت کجا تعریف شده، احتمالا ازش new نکردی و یا خالی از داده است.