Salut quelle est la bonne façon d'insérer des données de deux tables à une table, ils sont 3 tables, ma table poing est Tbl_order
a Order_ID
et le second Tbl_Cashier
a Cashier_ID
et le 3e est Tbl_Finalized
a Order_ID
et Cashier_ID
. la conception complète des tablesInsérer des données de deux tables à une table C#
de Tbl_Cashier
CREATE TABLE [dbo].[Tbl_Cashier] (
[Cashier_ID] INT IDENTITY (1, 1) NOT NULL,
[FName] VARCHAR (50) NOT NULL,
[MName] VARCHAR (50) NULL,
[LName] VARCHAR (50) NOT NULL,
[Address] NVARCHAR (50) NOT NULL,
[ContactNo] VARCHAR (50) NOT NULL,
[Email] NVARCHAR (50) NOT NULL,
[Age] INT NOT NULL,
[Gender] VARCHAR (50) NOT NULL,
[Password] VARCHAR (50) NOT NULL,
[role] NVARCHAR (50) NULL,
PRIMARY KEY CLUSTERED ([Cashier_ID] ASC)
);
Tbl_order
CREATE TABLE [dbo].[Tbl_order] (
[Order_ID] INT IDENTITY (1, 1) NOT NULL,
[CustomerNo] INT NOT NULL,
[OrderName] NVARCHAR (MAX) NOT NULL,
[Quantity] INT NOT NULL,
[Price] FLOAT (53) NOT NULL,
[Serves_way] INT NOT NULL,
[Date] DATETIME NOT NULL,
PRIMARY KEY CLUSTERED ([Order_ID] ASC),
CONSTRAINT [Serves_wayFK] FOREIGN KEY ([Serves_way]) REFERENCES [dbo].[Tbl_Serve] ([Serve_ID])
);
Tbl_Finalized
CREATE TABLE [dbo].[Tbl_Finalized] (
[Finalized_ID] INT IDENTITY (1, 1) NOT NULL,
[Order_ID] INT NOT NULL,
[Cashier_ID] INT NOT NULL,
[Customer_ID] INT NOT NULL,
PRIMARY KEY CLUSTERED ([Finalized_ID] ASC),
CONSTRAINT [CashierFK] FOREIGN KEY ([Cashier_ID]) REFERENCES [dbo].[Tbl_Cashier] ([Cashier_ID]),
CONSTRAINT [CustomerFK] FOREIGN KEY ([Customer_ID]) REFERENCES [dbo].[Tbl_Customer] ([Customer_ID])
);
quand je connecte l'application que j'utilise Tbl_Cashier
par FName et mot de passe I Connectez-vous, Comment obtenir le Cashier_ID
qui s'est connecté et l'insérer dans Cashier_ID
dans Tbl_Finalized
? ceci est mon code de connexion:
private void but_log_in_Click(object sender, EventArgs e)
{
if (tbx_username.Text == "" || Tbx_Password.Text == "")
{
MessageBox.Show("Please provide UserName and Password");
return;
}
try
{
using (SqlConnection con = new SqlConnection(connectionString))
using (SqlCommand cmd = new SqlCommand("Select * from
Tbl_Cashier where [email protected] and [email protected]", con))
using (SqlDataAdapter adapt = new SqlDataAdapter(cmd))
{
con.Open();
cmd.Parameters.AddWithValue("@username", tbx_username.Text);
cmd.Parameters.AddWithValue("@password", Tbx_Password.Text);
HabibisGrll.Globals.sss = tbx_username.Text;
DataSet ds = new DataSet();
adapt.Fill(ds);
con.Close();
int count = ds.Tables[0].Rows.Count;
//If count is equal to 1, than show frmMain form
if (count == 1)
{
MessageBox.Show("Login Successful!");
this.Hide();
HabibisGrll fm = new HabibisGrll();
fm.Show();
}
else
{
MessageBox.Show("Login Failed!");
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
Et de l'application que j'utilise listboxes pour insérer les commandes à Tbl_order
je veux insérer le Order_ID
il a été i sélectionné et inséré Tbl_order
-Order_ID
dans Tbl_Finalized
. mon code d'insérer toutes les commandes à la base de données listbox
private void Order()
{
using (SqlConnection connection = new SqlConnection(connectionString1))
{
String query = "INSERT INTO Tbl_order (OrderName,Quantity,Price,Serves_way,Date,CustomerNo) VALUES (@OrderName,@Quantity, @Price,'" + servers + "','" + time1.ToString(format1) + "','" + Globals.order + "')";
Globals.order++;
connection.Open();
using (SqlCommand command = new SqlCommand(query, connection))
{
// Add the length of this text column as third parameter...
command.Parameters.Add("OrderName", SqlDbType.NVarChar, 50);
command.Parameters.Add("Quantity", SqlDbType.Int);
command.Parameters.Add("Price", SqlDbType.Money);
command.Prepare();
for (int i = 0; i < lst_OrderName.Items.Count; i++)
{
command.Parameters[0].Value = lst_OrderName.GetItemText(lst_OrderName.Items[i]);
command.Parameters[1].Value = Convert.ToInt32(lst_QTY.Items[i]);
command.Parameters[2].Value = Convert.ToDouble(lst_Price2.Items[i]);
command.ExecuteNonQuery();
/* int totalRows = CustomerNo.Rows.Count;
int totalCols = CustomerNo.Columns.Count;
string value = CustomerNo.Rows[totalRows - 1][totalCols - 1].ToString();*/
}
}
}
}
Oui, j'ai eu du mal à l'essayer et à vous mettre à jour ^^, mais qu'en est-il de l'idée de "Order_ID"? –
https://stackoverflow.com/questions/42648/best-way-to-get-identity-of-inserted-row – BugFinder
l'indice de la réponse est ici comme il l'a dit ^^ mais la 2ème partie n'est pas sûre que ^^ –