2017-10-19 28 views
0

J'essaie d'insérer des données dans deux tables différentes.
L'un est (father_new) et l'autre est (lab5_students) mais les données sont insérées dans la table de lab5_student et n'apparaissent pas dans le fichier father_new.
J'ai utilisé la procédure stockée et je ne sais pas où j'ai mal fait.Les données ne sont pas insérées dans une table (père_new) mais apparaissent dans une autre table (lab5_students)

Ceci est mon code pour sauver le record du père

private void btn_submit_Click(object sender, EventArgs e) 
{ 
    if (String.IsNullOrEmpty(tbox_Fname1.Text) == true || String.IsNullOrEmpty(tbox_fdob.Text) == true || String.IsNullOrEmpty(tbox_fcnic.Text) == true) 
    { 
     MessageBox.Show("Name,DOB,Cnic fields are compulsary to fill"); 
    } 

    { 
     SqlCommand cmd = new SqlCommand("Lab5task2", conn); 
     cmd.CommandType = CommandType.StoredProcedure; 
     cmd.Parameters.Add("@Action", SqlDbType.NVarChar).Value = btn_Psubmit.Text; 
     cmd.Parameters.Add("@FName", SqlDbType.NVarChar).Value = tbox_Fname1.Text; 
     cmd.Parameters.Add("@FNum", SqlDbType.NChar).Value = tbox_fnum.Text; 
     cmd.Parameters.Add("@FOccup", SqlDbType.NVarChar).Value = tbox_occupation.Text; 
     cmd.Parameters.Add("@FEmail", SqlDbType.NVarChar).Value = tbox_femail.Text; 
     cmd.Parameters.Add("@FDOB", SqlDbType.DateTime).Value = DateTime.ParseExact(tbox_fdob.Text, "d-M-yyyy", null); 
     cmd.Parameters.Add("@Foffic_Num", SqlDbType.NChar).Value = tbox_offnum.Text; 
     cmd.Parameters.Add("@FAge", SqlDbType.NChar).Value = tbox_fage.Text; 
     cmd.Parameters.Add("@FState", SqlDbType.NVarChar).Value = tbox_Fstate.Text; 
     cmd.Parameters.Add("@FIncome", SqlDbType.NChar).Value = tbox_fincome.Text; 
     cmd.Parameters.Add("@FCnic", SqlDbType.NChar).Value = tbox_fcnic.Text; 
           conn.Open(); 
      cmd.ExecuteNonQuery(); 
      conn.Close(); 

    } 
} 

est de sauver le dossier de l'étudiant

private void btn_Ssubmit_Click(object sender, EventArgs e) 
{ 
    if (String.IsNullOrEmpty(tbox_sname.Text) == true || String.IsNullOrEmpty(tbox_sfname.Text) == true || String.IsNullOrEmpty(tbox_sid.Text) == true) 
    { 
     MessageBox.Show("Name,Father's Name and Id fields are compulsary to fill"); 
    } 
    else 
    { 
     SqlCommand cmd = new SqlCommand("Lab5task2", conn); 
     cmd.CommandType = CommandType.StoredProcedure; 
     cmd.Parameters.Add("@Action", SqlDbType.NVarChar).Value = btn_Ssubmit.Text; 
     cmd.Parameters.Add("@Sname", SqlDbType.NVarChar).Value = tbox_sname.Text; 
     cmd.Parameters.Add("@Sid", SqlDbType.NChar).Value = tbox_sid.Text; 
     cmd.Parameters.Add("@Sfather_name", SqlDbType.NVarChar).Value = tbox_sfname.Text; 
     cmd.Parameters.Add("@Sphone", SqlDbType.NVarChar).Value = tbox_sphone.Text; 
     cmd.Parameters.Add("@Semail", SqlDbType.NVarChar).Value = tbox_semail.Text; 
     cmd.Parameters.Add("@Saddress", SqlDbType.NVarChar).Value = tbox_saddress.Text; 
     cmd.Parameters.Add("@Sage", SqlDbType.NVarChar).Value = tbox_sage.Text; 

     if (rbtn_female.Text == "Female") 
     { 
      cmd.Parameters.Add("@Sgender", SqlDbType.NVarChar).Value = rbtn_female.Text; 
     } 
     else if (rbtn_male.Text == "Male") 
     { 
      cmd.Parameters.Add("@Sgender", SqlDbType.NVarChar).Value = rbtn_male.Text; 
     } 

     cmd.Parameters.Add("@Ssemester", SqlDbType.NVarChar).Value =  tbox_ssemester.Text; 
     cmd.Parameters.Add("@Suniversity", SqlDbType.NVarChar).Value = tbox_suni.Text; 
     conn.Open(); 
     cmd.ExecuteNonQuery(); 
     conn.Close(); 

ce ma ma procédure stockée

create procedure [dbo].[lab5task2] 
(
     -- For Parent data 
     @FName nvarchar(50)=null, 
     @FNum nchar(50) =null, 
     @FOccup nvarchar(50)=null, 
     @FEmail nvarchar(50)=null, 
     @FDOB datetime=null, 
     @Foffic_Num nchar(50)=null, 
     @FAge nchar(50)=null, 
     @FState nvarchar(50)=null, 
     @FIncome nchar(50)=null, 
     @FCnic nchar(50)=null, 
     -- For Student data 
     @Sname nvarchar(50)=null, 
     @Sid nchar(50)=null, 
     @Sfather_name nvarchar(50)=null, 
     @Sphone nvarchar(50)=null, 
     @Semail nvarchar(50)=null, 
     @Saddress nvarchar(50)=null, 
     @Sage nvarchar(50)=null, 
     @Sgender nvarchar(50)=null, 
     @Ssemester nchar(50)=null, 
     @Suniversity nvarchar(50)=null, 
     @Action nvarchar(50)=null 
) 

continued procedure

+0

Quel est exactement le texte du bouton _btn_Psubmit_ (majuscules et minuscules incluses parce que le faire une différence dans le code SP) – Steve

+0

Steve le texte était exactement le même dans la procédure que «Save Data» pour la table du père. Le problème était dans "Tout supprimer". Je n'ai pas remarqué que si une déclaration grâce à @mjwills –

Répondre

0

Le problème est avec cette partie de votre proc stocké.

if @Action = 'Delete All' 
delete from lab5_students; 
delete from father_new; 

Il ne fait pas ce que vous pensez qu'il fait. Je suspect vous pensez que le if s'applique à les deux les lignes de suppression. Mais cela ne s'applique qu'à la première. Vous faites efficacement:

if @Action = 'Delete All' 
    delete from lab5_students; 

delete from father_new; // i.e. always run this 

En tant que tel, vous devez utiliser BEGIN ... END:

if @Action = 'Delete All' 
BEGIN 
    delete from lab5_students; 
    delete from father_new; 
END 

Cela garantira que la deuxième DELETE exécute que si @Action est 'Supprimer tout'.

+0

oui mjwills cela a aidé: D code fonctionne parfaitement merci beaucoup mec. Dieu te bénisse –