elahe1393
شنبه 15 شهریور 1393, 10:05 صبح
سلام
یک لیستی از بیماران دارم که نیاز هست برای هر بیمار تنظیمات دستگاه ثبت کنم با انتخاب ستون هر بیمار و کلیک بر روی دکمه تنظیمات دستگاه کد بیمار رو به فرم جدید تنظیمات پاس میدم که بر اساس این کد بره تو جدول دیتابیس اگر برای بیمار قبلا تنظیماتی ثبت شده اونارو لود کنه در غیر این صورت فیلدها خالی باشه بعد وقتی فیلدهای تنظیمات رو پر کرد با کلیک بر روی دکمه ذخیره تنظیمات اطلاعات تو دیتابیس ذخیره بشه البته در صورتیکه تنظیماتی قبلا ثبت نشده insert کنه اگر تنظیماتی قبلا ثبت شده اونارو update کنه
فرم تنظیماتم اینه
123122
کد Insert
public void InsertDataSportDevice(Guid sportDeviceID)
{
OleDbConnection ocn = new OleDbConnection();
OleDbCommand ocm = new OleDbCommand();
ocn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Application.StartupPath + "\\SportDatabase.accdb";
ocm.Connection = ocn;
ocm.CommandText = "INSERT INTO SportDevice (SportDeviceID, PatientCode, LeftIsEnable, LeftStartPoint, LeftEndPoint,LeftHardnessLevel,"+
"RightIsEnable, RightStartPoint, RightEndPoint, RightHardnessLevel, Reapet) VALUES(sportDeviceID,patientCode,"+
"@leftIsEnable, @leftStartPoint, @leftEndPoint, @leftHardnessLevel, @rightIsEnable, @rightStartPoint, @rightEndPoint,"+
"@rightHardnessLevel, @reapet)";
ocm.Parameters.Clear();
ocm.Parameters.AddWithValue("sportDeviceId", sportDeviceID);
ocm.Parameters.AddWithValue("patientCode", Int32.Parse(lblPatientCode.Text));
ocm.Parameters.AddWithValue("@leftIsEnable", chkLeftIsEnable.Checked);
ocm.Parameters.AddWithValue("@LeftStartPoint", txtLeftStartPoint.Text);
ocm.Parameters.AddWithValue("@LeftEndPoint", txtLeftEndPoint.Text);
ocm.Parameters.AddWithValue("@LeftHardnessLevel", txtLeftHardnessLevel.Text);
ocm.Parameters.AddWithValue("@rightIsEnable", chkRightIsEnable.Checked);
ocm.Parameters.AddWithValue("@rightStartPoint", txtRightStartPoint.Text);
ocm.Parameters.AddWithValue("@rightEndPoint", txtRightEndPoint.Text);
ocm.Parameters.AddWithValue("@rightHardnessLevel", txtRightHardnessLevel.Text);
ocm.Parameters.AddWithValue("@reapet", numUpDown.Value);
ocn.Open();
ocm.ExecuteNonQuery();
ocn.Close();
ocm.Dispose();
ocn.Dispose();
}
کد update
public void UpdateDataSetting()
{
OleDbConnection ocn = new OleDbConnection();
OleDbCommand ocm = new OleDbCommand();
ocn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Application.StartupPath + "\\SportDatabase.accdb";
ocm.Connection = ocn;
ocm.CommandText = "UPDATE SportDevice SET LeftIsEnable = @leftIsEnable , LeftStartPoint = @leftStartPoint, LeftEndPoint = @leftEndPoint,"+
"LeftHardnessLevel = @leftHardnessLevel, RightIsEnable = @rightIsEnable, RightStartPoint = @rightStartPoint,"+
"RightEndPoint = @rightEndPoint, RightHardnessLevel = @rightHardnessLevel, Reapet = @reapet WHERE PatientCode = patientCode";
ocm.Parameters.Clear();
ocm.Parameters.AddWithValue("patientCode", Int32.Parse(lblPatientCode.Text));
ocm.Parameters.AddWithValue("@leftIsEnable", chkLeftIsEnable.Checked);
ocm.Parameters.AddWithValue("@LeftStartPoint", txtLeftStartPoint.Text);
ocm.Parameters.AddWithValue("@LeftEndPoint", txtLeftEndPoint.Text);
ocm.Parameters.AddWithValue("@LeftHardnessLevel", txtLeftHardnessLevel.Text);
ocm.Parameters.AddWithValue("@rightIsEnable", chkRightIsEnable.Checked);
ocm.Parameters.AddWithValue("@rightStartPoint", txtRightStartPoint.Text);
ocm.Parameters.AddWithValue("@rightEndPoint", txtRightEndPoint.Text);
ocm.Parameters.AddWithValue("@rightHardnessLevel", txtRightHardnessLevel.Text);
ocm.Parameters.AddWithValue("@reapet", numUpDown.Value);
ocn.Open();
ocm.ExecuteNonQuery();
ocn.Close();
ocm.Dispose();
ocn.Dispose();
}
حالا مشکلم اینه که وقتی به مرحله Update میرسم داده هایی که تو دیتابیس ذخیره میکنه اشتباست یعنی مثلا فیلد زاویه شروع بازوی راست تو ستون زاویه پایان بازوی راست ذخیره میکنه و همینجور یک فیلد میره جلو یا مثلا سختی بازوی راست تو ستون تکرار ذخیره میشه !
بعد مشکل دوم اینه که همه رکوردهای جدول رو تغییر میده حتی اونایی که کدهای بیمار متفاوته!
یه مشکل دیگه هم اینکه بعضی وقتا مثلا تنظیمات بازوی راست رو تعیین می کنم و برای اولین بار ذخیره می کنم بعد دفعه دوم که این تنظیمات بارگزاری شد وقتی مثلا یه فیلدشو تغییر میدم مثلا فیلد زاویه پایان بازوی راست رو تغییر میدم وقتی میره دیتابیس رو آپدیت کنه خطای Data type mismatch in criteria expression میده!
خیلی عجیبه مشکل کجاست؟
یک لیستی از بیماران دارم که نیاز هست برای هر بیمار تنظیمات دستگاه ثبت کنم با انتخاب ستون هر بیمار و کلیک بر روی دکمه تنظیمات دستگاه کد بیمار رو به فرم جدید تنظیمات پاس میدم که بر اساس این کد بره تو جدول دیتابیس اگر برای بیمار قبلا تنظیماتی ثبت شده اونارو لود کنه در غیر این صورت فیلدها خالی باشه بعد وقتی فیلدهای تنظیمات رو پر کرد با کلیک بر روی دکمه ذخیره تنظیمات اطلاعات تو دیتابیس ذخیره بشه البته در صورتیکه تنظیماتی قبلا ثبت نشده insert کنه اگر تنظیماتی قبلا ثبت شده اونارو update کنه
فرم تنظیماتم اینه
123122
کد Insert
public void InsertDataSportDevice(Guid sportDeviceID)
{
OleDbConnection ocn = new OleDbConnection();
OleDbCommand ocm = new OleDbCommand();
ocn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Application.StartupPath + "\\SportDatabase.accdb";
ocm.Connection = ocn;
ocm.CommandText = "INSERT INTO SportDevice (SportDeviceID, PatientCode, LeftIsEnable, LeftStartPoint, LeftEndPoint,LeftHardnessLevel,"+
"RightIsEnable, RightStartPoint, RightEndPoint, RightHardnessLevel, Reapet) VALUES(sportDeviceID,patientCode,"+
"@leftIsEnable, @leftStartPoint, @leftEndPoint, @leftHardnessLevel, @rightIsEnable, @rightStartPoint, @rightEndPoint,"+
"@rightHardnessLevel, @reapet)";
ocm.Parameters.Clear();
ocm.Parameters.AddWithValue("sportDeviceId", sportDeviceID);
ocm.Parameters.AddWithValue("patientCode", Int32.Parse(lblPatientCode.Text));
ocm.Parameters.AddWithValue("@leftIsEnable", chkLeftIsEnable.Checked);
ocm.Parameters.AddWithValue("@LeftStartPoint", txtLeftStartPoint.Text);
ocm.Parameters.AddWithValue("@LeftEndPoint", txtLeftEndPoint.Text);
ocm.Parameters.AddWithValue("@LeftHardnessLevel", txtLeftHardnessLevel.Text);
ocm.Parameters.AddWithValue("@rightIsEnable", chkRightIsEnable.Checked);
ocm.Parameters.AddWithValue("@rightStartPoint", txtRightStartPoint.Text);
ocm.Parameters.AddWithValue("@rightEndPoint", txtRightEndPoint.Text);
ocm.Parameters.AddWithValue("@rightHardnessLevel", txtRightHardnessLevel.Text);
ocm.Parameters.AddWithValue("@reapet", numUpDown.Value);
ocn.Open();
ocm.ExecuteNonQuery();
ocn.Close();
ocm.Dispose();
ocn.Dispose();
}
کد update
public void UpdateDataSetting()
{
OleDbConnection ocn = new OleDbConnection();
OleDbCommand ocm = new OleDbCommand();
ocn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Application.StartupPath + "\\SportDatabase.accdb";
ocm.Connection = ocn;
ocm.CommandText = "UPDATE SportDevice SET LeftIsEnable = @leftIsEnable , LeftStartPoint = @leftStartPoint, LeftEndPoint = @leftEndPoint,"+
"LeftHardnessLevel = @leftHardnessLevel, RightIsEnable = @rightIsEnable, RightStartPoint = @rightStartPoint,"+
"RightEndPoint = @rightEndPoint, RightHardnessLevel = @rightHardnessLevel, Reapet = @reapet WHERE PatientCode = patientCode";
ocm.Parameters.Clear();
ocm.Parameters.AddWithValue("patientCode", Int32.Parse(lblPatientCode.Text));
ocm.Parameters.AddWithValue("@leftIsEnable", chkLeftIsEnable.Checked);
ocm.Parameters.AddWithValue("@LeftStartPoint", txtLeftStartPoint.Text);
ocm.Parameters.AddWithValue("@LeftEndPoint", txtLeftEndPoint.Text);
ocm.Parameters.AddWithValue("@LeftHardnessLevel", txtLeftHardnessLevel.Text);
ocm.Parameters.AddWithValue("@rightIsEnable", chkRightIsEnable.Checked);
ocm.Parameters.AddWithValue("@rightStartPoint", txtRightStartPoint.Text);
ocm.Parameters.AddWithValue("@rightEndPoint", txtRightEndPoint.Text);
ocm.Parameters.AddWithValue("@rightHardnessLevel", txtRightHardnessLevel.Text);
ocm.Parameters.AddWithValue("@reapet", numUpDown.Value);
ocn.Open();
ocm.ExecuteNonQuery();
ocn.Close();
ocm.Dispose();
ocn.Dispose();
}
حالا مشکلم اینه که وقتی به مرحله Update میرسم داده هایی که تو دیتابیس ذخیره میکنه اشتباست یعنی مثلا فیلد زاویه شروع بازوی راست تو ستون زاویه پایان بازوی راست ذخیره میکنه و همینجور یک فیلد میره جلو یا مثلا سختی بازوی راست تو ستون تکرار ذخیره میشه !
بعد مشکل دوم اینه که همه رکوردهای جدول رو تغییر میده حتی اونایی که کدهای بیمار متفاوته!
یه مشکل دیگه هم اینکه بعضی وقتا مثلا تنظیمات بازوی راست رو تعیین می کنم و برای اولین بار ذخیره می کنم بعد دفعه دوم که این تنظیمات بارگزاری شد وقتی مثلا یه فیلدشو تغییر میدم مثلا فیلد زاویه پایان بازوی راست رو تغییر میدم وقتی میره دیتابیس رو آپدیت کنه خطای Data type mismatch in criteria expression میده!
خیلی عجیبه مشکل کجاست؟