تغير كود من vb.net ال سي شارب - amonem - 07-07-19
السلام عليكم ورحمة الله وبركاته
محتاج تعديل كود VB.net الى سي شارب
وهو كود الفرض منه حفظ البيانات والتعديل عليها من خلال الداتا فيو مباشرا
مرفق كود vb.net المطلوب تغييره الى سي شارب
إقتباس :Imports System.Data
Imports System.Data.SqlClient
Public Class Form1
Dim conn As New SqlConnection("Data Source=.\SQLEXPRESS;Initial Catalog=Data_Company;Integrated Security=True")
Dim ds As New DataSet
Dim dv As DataView
Dim da As New SqlDataAdapter
Dim cmd As New SqlCommand
Dim sql As String
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
For Each row As DataGridViewRow In DGV_Schol.Rows
If row.Cells(0).Value = "" Then
sql = "insert into T_Schol(Schol_ID,Emp_ID,School_ID,Schol_Start,Schol_User,Schol_Date)values (@Schol_ID,@Emp_ID,@School_ID,@Schol_Start,@Schol_User,@Schol_Date)"
Else
sql = "update T_Schol set Emp_ID=@Emp_ID,School_ID=@School_ID,Schol_Start=@Schol_Start,Schol_User=@Schol_User,Schol_Date=@Schol_Date where Schol_ID=@Schol_ID "
End If
With cmd.Parameters
.AddWithValue("@Emp_ID", row.Cells(1).Value).DbType = DbType.String
.AddWithValue("@School_ID", row.Cells(1).Value).DbType = DbType.String
.AddWithValue("@Schol_Start", row.Cells(1).Value).DbType = DbType.String
.AddWithValue("@Schol_User", Me.TextBox1.Text.ToString())
.AddWithValue("@Schol_Date", Format(Date.Today, "yyyy/MM/dd").ToString())
End With
conn.Open()
cmd.ExecuteNonQuery()
conn.Close()
Next
End Sub
End Class
وايضا صوره من الداتا فيو المراد العمل عليها وموضح بها اسماء الحقول
وهذا كود سي شارب لتعبئه البيانات فى الداتا فيو
DB.FillDGV(DGV_Schol, "select T_Schol.School_ID,School_Nam,Emp_ID,Schol_Start,Schol_User,Schol_Date from T_Schol,T_School where T_Schol.School_ID=T_School.School_ID and Emp_ID=" + textBox1.Text + "");
ولكم منى جزيل الشكر ولاحترام
وجزام الله عنا كل خير
اتمنى ان اجد طلبى هذا
RE: تغير كود من vb.net ال سي شارب - ابراهيم ايبو - 07-07-19
السلام عليكم اخي الكريم
هذا تحويل الكود من VB الى Cشارب
كود :
using System.Data;
using System.Data.SqlClient;
public class Form1
{
private SqlConnection conn = new SqlConnection("Data Source=.\\SQLEXPRESS;Initial Catalog=Data_Company;Integrated Security=True");
private DataSet ds = new DataSet();
private DataView dv;
private SqlDataAdapter da = new SqlDataAdapter();
private SqlCommand cmd = new SqlCommand();
private string sql;
private void Button1_Click(object sender, System.EventArgs e)
{
foreach (DataGridViewRow row in DGV_Schol.Rows)
{
if (row.Cells[0].Value == "")
{
sql = "insert into T_Schol(Schol_ID,Emp_ID,School_ID,Schol_Start,Schol_User,Schol_Date)values (@Schol_ID,@Emp_ID,@School_ID,@Schol_Start,@Schol_User,@Schol_Date)";
}
else
{
sql = "update T_Schol set Emp_ID=@Emp_ID,School_ID=@School_ID,Schol_Start=@Schol_Start,Schol_User=@Schol_User,Schol_Date=@Schol_Date where Schol_ID=@Schol_ID ";
}
cmd.Parameters.AddWithValue("@Emp_ID", row.Cells[1].Value).DbType = DbType.String;
cmd.Parameters.AddWithValue("@School_ID", row.Cells[1].Value).DbType = DbType.String;
cmd.Parameters.AddWithValue("@Schol_Start", row.Cells[1].Value).DbType = DbType.String;
cmd.Parameters.AddWithValue("@Schol_User", this.textBox1.Text.ToString());
cmd.Parameters.AddWithValue("@Schol_Date", DateTime.Today.ToString("yyyy/MM/dd").ToString());
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
}
}
وهذا السطر الاخر
كود :
GV(DGV_Schol, "select T_Schol.School_ID,School_Nam,Emp_ID,Schol_Start,Schol_User,Schol_Date from T_Schol,T_School where T_Schol.School_ID=T_School.School_ID and Emp_ID=" + textBox1.Text + "");
RE: تغير كود من vb.net ال سي شارب - amonem - 07-07-19
(07-07-19, 02:35 PM)ابراهيم ايبو كتب : السلام عليكم اخي الكريم
هذا تحويل الكود من VB الى Cشارب
كود :
using System.Data;
using System.Data.SqlClient;
public class Form1
{
private SqlConnection conn = new SqlConnection("Data Source=.\\SQLEXPRESS;Initial Catalog=Data_Company;Integrated Security=True");
private DataSet ds = new DataSet();
private DataView dv;
private SqlDataAdapter da = new SqlDataAdapter();
private SqlCommand cmd = new SqlCommand();
private string sql;
private void Button1_Click(object sender, System.EventArgs e)
{
foreach (DataGridViewRow row in DGV_Schol.Rows)
{
if (row.Cells[0].Value == "")
{
sql = "insert into T_Schol(Schol_ID,Emp_ID,School_ID,Schol_Start,Schol_User,Schol_Date)values (@Schol_ID,@Emp_ID,@School_ID,@Schol_Start,@Schol_User,@Schol_Date)";
}
else
{
sql = "update T_Schol set Emp_ID=@Emp_ID,School_ID=@School_ID,Schol_Start=@Schol_Start,Schol_User=@Schol_User,Schol_Date=@Schol_Date where Schol_ID=@Schol_ID ";
}
cmd.Parameters.AddWithValue("@Emp_ID", row.Cells[1].Value).DbType = DbType.String;
cmd.Parameters.AddWithValue("@School_ID", row.Cells[1].Value).DbType = DbType.String;
cmd.Parameters.AddWithValue("@Schol_Start", row.Cells[1].Value).DbType = DbType.String;
cmd.Parameters.AddWithValue("@Schol_User", this.textBox1.Text.ToString());
cmd.Parameters.AddWithValue("@Schol_Date", DateTime.Today.ToString("yyyy/MM/dd").ToString());
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
}
}
وهذا السطر الاخر
كود :
GV(DGV_Schol, "select T_Schol.School_ID,School_Nam,Emp_ID,Schol_Start,Schol_User,Schol_Date from T_Schol,T_School where T_Schol.School_ID=T_School.School_ID and Emp_ID=" + textBox1.Text + "");
RE: تغير كود من vb.net ال سي شارب - amonem - 08-07-19
(07-07-19, 02:35 PM)ابراهيم ايبو كتب : السلام عليكم اخي الكريم
هذا تحويل الكود من VB الى Cشارب
كود :
using System.Data;
using System.Data.SqlClient;
public class Form1
{
private SqlConnection conn = new SqlConnection("Data Source=.\\SQLEXPRESS;Initial Catalog=Data_Company;Integrated Security=True");
private DataSet ds = new DataSet();
private DataView dv;
private SqlDataAdapter da = new SqlDataAdapter();
private SqlCommand cmd = new SqlCommand();
private string sql;
private void Button1_Click(object sender, System.EventArgs e)
{
foreach (DataGridViewRow row in DGV_Schol.Rows)
{
if (row.Cells[0].Value == "")
{
sql = "insert into T_Schol(Schol_ID,Emp_ID,School_ID,Schol_Start,Schol_User,Schol_Date)values (@Schol_ID,@Emp_ID,@School_ID,@Schol_Start,@Schol_User,@Schol_Date)";
}
else
{
sql = "update T_Schol set Emp_ID=@Emp_ID,School_ID=@School_ID,Schol_Start=@Schol_Start,Schol_User=@Schol_User,Schol_Date=@Schol_Date where Schol_ID=@Schol_ID ";
}
cmd.Parameters.AddWithValue("@Emp_ID", row.Cells[1].Value).DbType = DbType.String;
cmd.Parameters.AddWithValue("@School_ID", row.Cells[1].Value).DbType = DbType.String;
cmd.Parameters.AddWithValue("@Schol_Start", row.Cells[1].Value).DbType = DbType.String;
cmd.Parameters.AddWithValue("@Schol_User", this.textBox1.Text.ToString());
cmd.Parameters.AddWithValue("@Schol_Date", DateTime.Today.ToString("yyyy/MM/dd").ToString());
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
}
}
وهذا السطر الاخر
كود :
GV(DGV_Schol, "select T_Schol.School_ID,School_Nam,Emp_ID,Schol_Start,Schol_User,Schol_Date from T_Schol,T_School where T_Schol.School_ID=T_School.School_ID and Emp_ID=" + textBox1.Text + "");
شكرا لهتممك استاذ ابرهيم
طبقت الكود ويعطي خطأ لو ممكن تنفذ لكود على الملف المرفق
وجزك الله كل خير
RE: تغير كود من vb.net ال سي شارب - ابراهيم ايبو - 08-07-19
السلام عليكم اخي الكريم
الكود الاصلي بالفيجوال بيسك فيه اخطاء كاسماء الحقول مثلا وانا لم اقم بالاصلاح فقط قمت بتحويله كما هو
RE: تغير كود من vb.net ال سي شارب - amonem - 08-07-19
(08-07-19, 10:02 AM)ابراهيم ايبو كتب : السلام عليكم اخي الكريم
الكود الاصلي بالفيجوال بيسك فيه اخطاء كاسماء الحقول مثلا وانا لم اقم بالاصلاح فقط قمت بتحويله كما هو
شكر لك ولاهتمامك
ممكن تنزل الملف المرفق وتشوف المشروع ال عايز اطبق عليه الكود ومرفق معه نسخه لقاعده البيانات
وجزك الله كل خير
ولو عند حضرتك كود شبيه افضل معنديش مشكله
د رابط شرح ال انا عايز اطبقه وقريب جدا من طلبي ولكن به استخدام لاجراء مخزن وانا مش حابب استخدم اجراءات مخزنه للمشروع
https://www.youtube.com/watch?v=cQQy_IfFddg&t=334s
ولك منى الف تحيه
RE: تغير كود من vb.net ال سي شارب - سعود - 08-07-19
السلام عليكم ورحمة الله وبركاته
بعد اذن الجميع اضع مشاركتي البسيطة هنا:
[مشروع] مثال بسيط بالسي شارب دفتر عناوين مع صورة
RE: تغير كود من vb.net ال سي شارب - amonem - 08-07-19
(08-07-19, 05:46 PM)سعود كتب : السلام عليكم ورحمة الله وبركاته
بعد اذن الجميع اضع مشاركتي البسيطة هنا:
[مشروع] مثال بسيط بالسي شارب دفتر عناوين مع صورة
شكر استاذ سعود لردك
هذا المشروع جميل بارك الله فيك
ولكن هذا المشروع ليس له علاقه بطلبى
اتمنى لو بامكان مساعدتى فى حل للملف المرفق
RE: تغير كود من vb.net ال سي شارب - elgokr - 08-07-19
بخصوص المشاركة رقم #4
خاص المشروع المرفق تم التعديل على الكود بداخله ليصبح بهذا الشكل
كود :
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;
namespace Test
{
public partial class Form1 : Form
{
private DataSet ds = new DataSet();
private DataView dv = new DataView();
private SqlDataAdapter da = new SqlDataAdapter();
private SqlCommand cmd = new SqlCommand();
private string sql;
public Form1()
{
InitializeComponent();
ComboBox_School();
// هذا السلطر تعبئه الكمبو بوكس
DB.FillComBobx(comboBox1, "select School_Nam,School_ID from TB_School", "School_Nam", "School_ID");
// هذا السطر يتم من خلاله تعبئه كمبو بوكس خارج الداتا فيو لو امكن تعديله لتعبئه كمبو بوكس داخل الداتا فيو ايضا
//DB.FillComBobx(Col_School_Nam, "select School_Nam,School_ID from TB_School", "School_Nam", "School_ID");
// هذا السلطر لاستدعاء البيانات داخل الداتا فيو
DB.FillDGV(DGV_Schol, "select TB_Schol.School_ID,Emp_ID,Schol_Start,Schol_Date from TB_Schol,TB_School where TB_Schol.School_ID=TB_School.School_ID and Emp_ID=" + this.Txt_Emp_ID.Text + "");
}
void ComboBox_School() // كود لتعبئه الكمبو بوكس داخل الداتا فيو
{
DB.openDB();
SqlDataAdapter sql = new SqlDataAdapter("select * from TB_School", DB.Con);
DataTable Dt = new DataTable();
sql.Fill(Dt);
Col_School.ValueMember = "School_ID";
Col_School.DisplayMember = "School_Nam";
DataRow topItem = Dt.NewRow();
topItem[0] = 0;
topItem[1] = "-أختر-";
Dt.Rows.InsertAt(topItem, 0);
Col_School.DataSource = Dt;
}
private void Btn_Save_Click(object sender, EventArgs e)
{
foreach (DataGridViewRow row in DGV_Schol.Rows)
{
if (row.Cells[0].Value == null)
{
sql = "insert into TB_Schol(Schol_ID,Emp_ID,School_ID,Schol_Start,Schol_User,Schol_Date)values (@Schol_ID,@Emp_ID,@School_ID,@Schol_Start,@Schol_User,@Schol_Date)";
}
else
{
sql = "update TB_Schol set Emp_ID=@Emp_ID,School_ID=@School_ID,Schol_Start=@Schol_Start,Schol_User=@Schol_User,Schol_Date=@Schol_Date where Schol_ID=@Schol_ID ";
}
DB.Con.Close();
cmd.Parameters.AddWithValue("@Emp_ID", this.Txt_Emp_ID.Text.ToString());
cmd.Parameters.AddWithValue("@School_ID", row.Cells[2].Value).DbType = DbType.Int32;
cmd.Parameters.AddWithValue("@Schol_Start", row.Cells[3].Value).DbType = DbType.String;
cmd.Parameters.AddWithValue("@Schol_User", this.Txt_User.Text.ToString());
cmd.Parameters.AddWithValue("@Schol_Date", DateTime.Today.ToString("yyyy/MM/dd").ToString());
DB.Con.Open();
cmd.ExecuteNonQuery();
DB.Con.Close();
MessageBox.Show("تم الحفظ بنجاح");
}
}
}
}
ولكن لدي بعض الاسؤلة بسبب عدم تمكنى من اختبار
البرنامج بعد تعديل الكود بسبب اختلاف اصدار قاعدة البيانات فاذا كان تم سحبها كاسكربت كود سيكون افضل
وعدم تمكنى ايضاً من ارفاق المشروع بعد التعديل ايضاً بسبب اختلاف الاصدار لديك ولدي
على اى حال السؤال الاول بخصوص هذا السطر
كود :
if (row.Cells[0].Value == null)
// الاول كان بهذا الشكل
if (row.Cells[0].Value == "")
هل عملية الاضافة عند داخل بيانات جديدة
يتم تعبئة السطر الجديد بدون كتابة وادخال رقم للمسلسل
لان اذا كان الرد لا فهنا الشرط من التحقق هنا خطاء تماماً وانه سيعمل دائماً على تحديث فقط وليس ادخال
الا اذا كنت عملت تجميد لعمود المسلسل من التعديل والكتابة به
السؤال الثاني من هو خصائص هذا العمود
حيث ان القيمة يتم تعبئتها من هنا
والمقصود به رقم الموظف والمشكلة انك كنت عامل فى الكود انه من نوع نص
وتم التعديل ليكون
فكما ذكرت انا لا اعلم محتوى قاعدة البيانات بسبب اختلاف الاصدار لديك ولدي
السؤال الاخير
انت تستخدم التالى
PHP كود :
@Schol_ID,@Emp_ID,@School_ID,@Schol_Start,@Schol_User,@Schol_Date
بينما عند اعطاء القيم لها تكون
كود :
cmd.Parameters.AddWithValue("@Emp_ID", this.Txt_Emp_ID.Text.ToString());
cmd.Parameters.AddWithValue("@School_ID", row.Cells[2].Value).DbType = DbType.Int32;
cmd.Parameters.AddWithValue("@Schol_Start", row.Cells[3].Value).DbType = DbType.String;
cmd.Parameters.AddWithValue("@Schol_User", this.Txt_User.Text.ToString());
cmd.Parameters.AddWithValue("@Schol_Date", DateTime.Today.ToString("yyyy/MM/dd").ToString());
الاول بعدد 6 والثاني بعدد 5 مش ملاحظ انك لم تعطي قيمة لـ
اتمنى مراجعة الامر او ارفاق المثال من خلال قاعدة بيانات Access
سيسهل عليك الامر فى عملية اطلاع الجميع الامر
وبعد اتمام فهم الامر وامتلاك الكود يمكنك تعديل الكود من Access الى Sql بكل سهولة
تحياتى لك
وتمنياتى لك التوفيق
RE: تغير كود من vb.net ال سي شارب - amonem - 09-07-19
(08-07-19, 11:30 PM)elgokr كتب : بخصوص المشاركة رقم #4
خاص المشروع المرفق تم التعديل على الكود بداخله ليصبح بهذا الشكل
كود :
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;
namespace Test
{
public partial class Form1 : Form
{
private DataSet ds = new DataSet();
private DataView dv = new DataView();
private SqlDataAdapter da = new SqlDataAdapter();
private SqlCommand cmd = new SqlCommand();
private string sql;
public Form1()
{
InitializeComponent();
ComboBox_School();
// هذا السلطر تعبئه الكمبو بوكس
DB.FillComBobx(comboBox1, "select School_Nam,School_ID from TB_School", "School_Nam", "School_ID");
// هذا السطر يتم من خلاله تعبئه كمبو بوكس خارج الداتا فيو لو امكن تعديله لتعبئه كمبو بوكس داخل الداتا فيو ايضا
//DB.FillComBobx(Col_School_Nam, "select School_Nam,School_ID from TB_School", "School_Nam", "School_ID");
// هذا السلطر لاستدعاء البيانات داخل الداتا فيو
DB.FillDGV(DGV_Schol, "select TB_Schol.School_ID,Emp_ID,Schol_Start,Schol_Date from TB_Schol,TB_School where TB_Schol.School_ID=TB_School.School_ID and Emp_ID=" + this.Txt_Emp_ID.Text + "");
}
void ComboBox_School() // كود لتعبئه الكمبو بوكس داخل الداتا فيو
{
DB.openDB();
SqlDataAdapter sql = new SqlDataAdapter("select * from TB_School", DB.Con);
DataTable Dt = new DataTable();
sql.Fill(Dt);
Col_School.ValueMember = "School_ID";
Col_School.DisplayMember = "School_Nam";
DataRow topItem = Dt.NewRow();
topItem[0] = 0;
topItem[1] = "-أختر-";
Dt.Rows.InsertAt(topItem, 0);
Col_School.DataSource = Dt;
}
private void Btn_Save_Click(object sender, EventArgs e)
{
foreach (DataGridViewRow row in DGV_Schol.Rows)
{
if (row.Cells[0].Value == null)
{
sql = "insert into TB_Schol(Schol_ID,Emp_ID,School_ID,Schol_Start,Schol_User,Schol_Date)values (@Schol_ID,@Emp_ID,@School_ID,@Schol_Start,@Schol_User,@Schol_Date)";
}
else
{
sql = "update TB_Schol set Emp_ID=@Emp_ID,School_ID=@School_ID,Schol_Start=@Schol_Start,Schol_User=@Schol_User,Schol_Date=@Schol_Date where Schol_ID=@Schol_ID ";
}
DB.Con.Close();
cmd.Parameters.AddWithValue("@Emp_ID", this.Txt_Emp_ID.Text.ToString());
cmd.Parameters.AddWithValue("@School_ID", row.Cells[2].Value).DbType = DbType.Int32;
cmd.Parameters.AddWithValue("@Schol_Start", row.Cells[3].Value).DbType = DbType.String;
cmd.Parameters.AddWithValue("@Schol_User", this.Txt_User.Text.ToString());
cmd.Parameters.AddWithValue("@Schol_Date", DateTime.Today.ToString("yyyy/MM/dd").ToString());
DB.Con.Open();
cmd.ExecuteNonQuery();
DB.Con.Close();
MessageBox.Show("تم الحفظ بنجاح");
}
}
}
}
ولكن لدي بعض الاسؤلة بسبب عدم تمكنى من اختبار
البرنامج بعد تعديل الكود بسبب اختلاف اصدار قاعدة البيانات فاذا كان تم سحبها كاسكربت كود سيكون افضل
وعدم تمكنى ايضاً من ارفاق المشروع بعد التعديل ايضاً بسبب اختلاف الاصدار لديك ولدي
على اى حال السؤال الاول بخصوص هذا السطر
كود :
if (row.Cells[0].Value == null)
// الاول كان بهذا الشكل
if (row.Cells[0].Value == "")
هل عملية الاضافة عند داخل بيانات جديدة
يتم تعبئة السطر الجديد بدون كتابة وادخال رقم للمسلسل
لان اذا كان الرد لا فهنا الشرط من التحقق هنا خطاء تماماً وانه سيعمل دائماً على تحديث فقط وليس ادخال
الا اذا كنت عملت تجميد لعمود المسلسل من التعديل والكتابة به
السؤال الثاني من هو خصائص هذا العمود
حيث ان القيمة يتم تعبئتها من هنا
والمقصود به رقم الموظف والمشكلة انك كنت عامل فى الكود انه من نوع نص
وتم التعديل ليكون
فكما ذكرت انا لا اعلم محتوى قاعدة البيانات بسبب اختلاف الاصدار لديك ولدي
السؤال الاخير
انت تستخدم التالى
PHP كود :
@Schol_ID,@Emp_ID,@School_ID,@Schol_Start,@Schol_User,@Schol_Date
بينما عند اعطاء القيم لها تكون
كود :
cmd.Parameters.AddWithValue("@Emp_ID", this.Txt_Emp_ID.Text.ToString());
cmd.Parameters.AddWithValue("@School_ID", row.Cells[2].Value).DbType = DbType.Int32;
cmd.Parameters.AddWithValue("@Schol_Start", row.Cells[3].Value).DbType = DbType.String;
cmd.Parameters.AddWithValue("@Schol_User", this.Txt_User.Text.ToString());
cmd.Parameters.AddWithValue("@Schol_Date", DateTime.Today.ToString("yyyy/MM/dd").ToString());
الاول بعدد 6 والثاني بعدد 5 مش ملاحظ انك لم تعطي قيمة لـ
اتمنى مراجعة الامر او ارفاق المثال من خلال قاعدة بيانات Access
سيسهل عليك الامر فى عملية اطلاع الجميع الامر
وبعد اتمام فهم الامر وامتلاك الكود يمكنك تعديل الكود من Access الى Sql بكل سهولة
تحياتى لك
وتمنياتى لك التوفيق
شكرا لك استاذي الفاضل لاهتمامك
مرفق صوره من جدول TB_Schol الذي يتم العمل عليه
نظرا لانى لا استطيع عمل قاعده بيانات على الاكسس خبرتي لا تؤهلنى لذلك
ومرفق ايضا صوره لشاشه لادخال
كل ال محتاجه كود حفظ وتعديل من االدتا فيو مباشرا
ومش مهم يكون نفس الكود المرفق يني لو هناك فكرا افظل مافيش مشكله المهم تكون تؤي نفس النتيجه وهي تعديل واضافه وحذف عن طريق الداتا فيو
مع العلم ان iD يتم لترقيم تلقائي للجدول
وجزاك الله كل خير
(09-07-19, 12:53 AM)amonem كتب : (08-07-19, 11:30 PM)elgokr كتب : بخصوص المشاركة رقم #4
خاص المشروع المرفق تم التعديل على الكود بداخله ليصبح بهذا الشكل
كود :
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;
namespace Test
{
public partial class Form1 : Form
{
private DataSet ds = new DataSet();
private DataView dv = new DataView();
private SqlDataAdapter da = new SqlDataAdapter();
private SqlCommand cmd = new SqlCommand();
private string sql;
public Form1()
{
InitializeComponent();
ComboBox_School();
// هذا السلطر تعبئه الكمبو بوكس
DB.FillComBobx(comboBox1, "select School_Nam,School_ID from TB_School", "School_Nam", "School_ID");
// هذا السطر يتم من خلاله تعبئه كمبو بوكس خارج الداتا فيو لو امكن تعديله لتعبئه كمبو بوكس داخل الداتا فيو ايضا
//DB.FillComBobx(Col_School_Nam, "select School_Nam,School_ID from TB_School", "School_Nam", "School_ID");
// هذا السلطر لاستدعاء البيانات داخل الداتا فيو
DB.FillDGV(DGV_Schol, "select TB_Schol.School_ID,Emp_ID,Schol_Start,Schol_Date from TB_Schol,TB_School where TB_Schol.School_ID=TB_School.School_ID and Emp_ID=" + this.Txt_Emp_ID.Text + "");
}
void ComboBox_School() // كود لتعبئه الكمبو بوكس داخل الداتا فيو
{
DB.openDB();
SqlDataAdapter sql = new SqlDataAdapter("select * from TB_School", DB.Con);
DataTable Dt = new DataTable();
sql.Fill(Dt);
Col_School.ValueMember = "School_ID";
Col_School.DisplayMember = "School_Nam";
DataRow topItem = Dt.NewRow();
topItem[0] = 0;
topItem[1] = "-أختر-";
Dt.Rows.InsertAt(topItem, 0);
Col_School.DataSource = Dt;
}
private void Btn_Save_Click(object sender, EventArgs e)
{
foreach (DataGridViewRow row in DGV_Schol.Rows)
{
if (row.Cells[0].Value == null)
{
sql = "insert into TB_Schol(Schol_ID,Emp_ID,School_ID,Schol_Start,Schol_User,Schol_Date)values (@Schol_ID,@Emp_ID,@School_ID,@Schol_Start,@Schol_User,@Schol_Date)";
}
else
{
sql = "update TB_Schol set Emp_ID=@Emp_ID,School_ID=@School_ID,Schol_Start=@Schol_Start,Schol_User=@Schol_User,Schol_Date=@Schol_Date where Schol_ID=@Schol_ID ";
}
DB.Con.Close();
cmd.Parameters.AddWithValue("@Emp_ID", this.Txt_Emp_ID.Text.ToString());
cmd.Parameters.AddWithValue("@School_ID", row.Cells[2].Value).DbType = DbType.Int32;
cmd.Parameters.AddWithValue("@Schol_Start", row.Cells[3].Value).DbType = DbType.String;
cmd.Parameters.AddWithValue("@Schol_User", this.Txt_User.Text.ToString());
cmd.Parameters.AddWithValue("@Schol_Date", DateTime.Today.ToString("yyyy/MM/dd").ToString());
DB.Con.Open();
cmd.ExecuteNonQuery();
DB.Con.Close();
MessageBox.Show("تم الحفظ بنجاح");
}
}
}
}
ولكن لدي بعض الاسؤلة بسبب عدم تمكنى من اختبار
البرنامج بعد تعديل الكود بسبب اختلاف اصدار قاعدة البيانات فاذا كان تم سحبها كاسكربت كود سيكون افضل
وعدم تمكنى ايضاً من ارفاق المشروع بعد التعديل ايضاً بسبب اختلاف الاصدار لديك ولدي
على اى حال السؤال الاول بخصوص هذا السطر
كود :
if (row.Cells[0].Value == null)
// الاول كان بهذا الشكل
if (row.Cells[0].Value == "")
هل عملية الاضافة عند داخل بيانات جديدة
يتم تعبئة السطر الجديد بدون كتابة وادخال رقم للمسلسل
لان اذا كان الرد لا فهنا الشرط من التحقق هنا خطاء تماماً وانه سيعمل دائماً على تحديث فقط وليس ادخال
الا اذا كنت عملت تجميد لعمود المسلسل من التعديل والكتابة به
السؤال الثاني من هو خصائص هذا العمود
حيث ان القيمة يتم تعبئتها من هنا
والمقصود به رقم الموظف والمشكلة انك كنت عامل فى الكود انه من نوع نص
وتم التعديل ليكون
فكما ذكرت انا لا اعلم محتوى قاعدة البيانات بسبب اختلاف الاصدار لديك ولدي
السؤال الاخير
انت تستخدم التالى
PHP كود :
@Schol_ID,@Emp_ID,@School_ID,@Schol_Start,@Schol_User,@Schol_Date
بينما عند اعطاء القيم لها تكون
كود :
cmd.Parameters.AddWithValue("@Emp_ID", this.Txt_Emp_ID.Text.ToString());
cmd.Parameters.AddWithValue("@School_ID", row.Cells[2].Value).DbType = DbType.Int32;
cmd.Parameters.AddWithValue("@Schol_Start", row.Cells[3].Value).DbType = DbType.String;
cmd.Parameters.AddWithValue("@Schol_User", this.Txt_User.Text.ToString());
cmd.Parameters.AddWithValue("@Schol_Date", DateTime.Today.ToString("yyyy/MM/dd").ToString());
الاول بعدد 6 والثاني بعدد 5 مش ملاحظ انك لم تعطي قيمة لـ
اتمنى مراجعة الامر او ارفاق المثال من خلال قاعدة بيانات Access
سيسهل عليك الامر فى عملية اطلاع الجميع الامر
وبعد اتمام فهم الامر وامتلاك الكود يمكنك تعديل الكود من Access الى Sql بكل سهولة
تحياتى لك
وتمنياتى لك التوفيق
شكرا لك استاذي الفاضل لاهتمامك
مرفق صوره من جدول TB_Schol الذي يتم العمل عليه
نظرا لانى لا استطيع عمل قاعده بيانات على الاكسس خبرتي لا تؤهلنى لذلك
ومرفق ايضا صوره لشاشه لادخال
كل ال محتاجه كود حفظ وتعديل من االدتا فيو مباشرا
ومش مهم يكون نفس الكود المرفق يني لو هناك فكرا افظل مافيش مشكله المهم تكون تؤي نفس النتيجه وهي تعديل واضافه وحذف عن طريق الداتا فيو
مع العلم ان iD يتم لترقيم تلقائي للجدول
وجزاك الله كل خير
ودا ملف مرفق مع قاعده بيانات سيكول به الجداول
ملحوظه ممكن حضرتك تعمل كود اخر المه تكون النتيجه وحده
ولك جزيل الشكر والاحترام
|