hi my name is vishal for past 7 i have been breaking on how to show each group box along with it's controls based on value in c# windows forms with sql server 2008.
i have 5 group boxes.
1.name:GrpStep1,enabled:true,visible:true(contains 8 labels,2combobox,3textboxes and 3 datetimepickers).
2.name:GrpBarCode,enabled:true,visible:true(contains GrpDEntry along with 1 label and 1 textbox).
3.name:GrpDEntry,enabled:true,visible:true(contains 2 radio buttons).
4.name:GrpStep2,enabled:true,visible:true(contains 1 textbox,1button and StrokeScribe control).
5.name:GrpStep3,enabled:true,visible:true(contains 1 combobox,2buttons,2 picture boxes and StrokeScribe control).
So GrpStep1 is the base group box,GrpBarCode is a group box is put on or embed on grpStep1,GrpDEntry in put on or embed on GrpBarCode,GrpStep2 in put on or embed on GrpBarCode and GrpDEntry and GrpStep3 is a group box which is visible to the designer at design-time.
Given is my code below in c# of what i have tried:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace DRRS_CSharp
{
public partial class frmDialyzer : Form
{
int dStepIndex;
int pUserID;
public frmDialyzer()
{
InitializeComponent();
SqlConnection conn = new SqlConnection("Data Source=NPD-4\\SQLEXPRESS;Initial Catalog=DRRS;Integrated Security=true");
if (conn.State != ConnectionState.Open)
{
conn.Open();
}
string PatientPull = ("Select p.patient_id as patient_id,n.patient_first_name as patient_fname,n.patient_last_name as patient_lname from patient_name n,patient_id p where n.patient_id=p.patient_id and n.status=1 and p.patient_id not in (Select patient_id from dialyser where deleted_status=0)");
SqlCommand cmd = new SqlCommand(PatientPull);
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
PatientPull = dr[0].ToString() + dr[1].ToString() + dr[2].ToString();
cboPatientID.Items.Add(PatientPull);
}
dr.Close();
string ManufacturerPull = ("Select distinct(ManufacturerName) from EquipmentData");
SqlCommand mcd = new SqlCommand(ManufacturerPull);
mcd.Connection = conn;
mcd.CommandType = CommandType.Text;
SqlDataReader cdr = mcd.ExecuteReader();
while (cdr.Read())
{
ManufacturerPull = cdr[0].ToString();
cboManufacturer.Items.Add(ManufacturerPull);
}
cdr.Close();
}
private void frmDialyzer_Load(object sender, EventArgs e)
{
dtExpDate.MinDate = dtMFRDate.Value;
dStepIndex = 0;
GrpStep1.Visible = true;
GrpStep2.Visible = false;
GrpStep3.Visible = false;
dtStartDate.MinDate =dtStartDate.Value;
}
private void btnCancel_Click(object sender, EventArgs e)
{
this.Close();
}
private void btnNext_Click(object sender, EventArgs e)
{
if (GrpDEntry.Visible == true)
{
GrpDEntry.Visible = false;
GrpStep1.Text = "Step 2";
if (radioButton1.Checked == false)
{
GrpBarCode.Visible = false;
}
else
{
if (dStepIndex == 0)
{
string dFieldName = "";
Boolean vEmptyB = false;
if (cboManufacturer.Text == "")
{
vEmptyB = true;
dFieldName = "Please select a Manufacturer";
}
else if (cboequipmentType.Text == "")
{
vEmptyB = true;
dFieldName = "Please select size of the dialyzer";
}
// else if(txtMFRRefNo.Text.ToString().Trim()=="")
//{
// vEmptyB=true;
//dFieldName="Please enter Reference number of the dialyzer";
// }
else if (txtMFRLotNo.Text.ToString().Trim() == "")
{
vEmptyB = true;
dFieldName = "Please enter Lot No of the dialyzer";
}
else if (txtPVol.Text.ToString().Trim() == "")
{
vEmptyB = true;
dFieldName = "Please enter packed volume of the dialyzer";
}
if (vEmptyB == true)
{
MessageBox.Show(dFieldName + "should not be empty");
return;
}
string dDID;
SqlConnection conn = new SqlConnection("Data Source=NPD-4\\SQLEXPRESS;Initial Catalog=DRRS;Integrated Security=true");
if (conn.State != ConnectionState.Open)
{
conn.Open();
}
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
DataTable dt = new DataTable();
int autoGenId = -1;
cmd = new SqlCommand("Select max(agn) from dialyser;Select @autoGenId = SCOPE_IDENTITY();", conn);
cmd.Parameters.Add("@autoGenId", SqlDbType.Int).Direction = ParameterDirection.Output;
cmd.ExecuteNonQuery();
autoGenId = Convert.ToInt32(cmd.Parameters["@autoGenId"].Value);
if (autoGenId == 0)
{
dDID = "1";
}
else
{
dDID = autoGenId.ToString() + 1;
}
txtDID.Text = txtDID.Text.PadRight(5) + dDID;
conn.Close();
GrpStep1.Visible = false;
GrpStep2.Visible = true;
GrpStep3.Visible = false;
dStepIndex = 2;
btnNext.Enabled =false;
button1.Enabled = false;
txtDID.Focus();
}
else if (dStepIndex == 2)
{
GrpStep1.Visible = false;
GrpStep2.Visible = false;
GrpStep3.Visible = true;
dStepIndex = 3;
btnNext.Visible = false;
}
}
}
}
private void cboManufacturer_SelectedIndexChanged(object sender, EventArgs e)
{
if (cboManufacturer.SelectedIndex == -1)
{
return;
}
SqlConnection conn = new SqlConnection("Data Source=NPD-4\\SQLEXPRESS;Initial Catalog=DRRS;Integrated Security=true");
if (conn.State != ConnectionState.Open)
{
conn.Open();
}
string ManufacturerSize = ("Select distinct(volume) from EquipmentData where ManufacturerName='" + cboManufacturer.Text.ToString() + "'");
SqlCommand cmd = new SqlCommand(ManufacturerSize);
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
ManufacturerSize = dr[0].ToString();
cboequipmentType.Items.Add(ManufacturerSize);
}
dr.Close();
}
private void cboequipmentType_SelectedIndexChanged(object sender, EventArgs e)
{
if (cboequipmentType.SelectedIndex == -1)
{
return;
}
SqlConnection conn = new SqlConnection("Data Source=NPD-4\\SQLEXPRESS;Initial Catalog=DRRS;Integrated Security=true");
if (conn.State != ConnectionState.Open)
{
conn.Open();
}
string EquipmentVol = ("Select packed_volume from EquipmentData where ManufacturerName='" + cboManufacturer.Text.ToString() + "'and volume='" + cboequipmentType.Text + "'");
SqlCommand cmd = new SqlCommand(EquipmentVol);
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
EquipmentVol = dr[0].ToString();
txtPVol.Text = EquipmentVol;
}
dr.Close();
}
private void cboPatientID_SelectedIndexChanged(object sender, EventArgs e)
{
if (cboPatientID.SelectedIndex != -1)
{
btnSearch.Enabled = true;
btnAssign.Enabled = true;
SqlConnection conn = new SqlConnection("Data Source=NPD-4\\SQLEXPRESS;Initial Catalog=DRRS;Integrated Security=true");
if (conn.State != ConnectionState.Open)
{
conn.Open();
}
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
cmd = new SqlCommand("Select * from patient_name where status=1 and patient_id=" + cboPatientID.GetItemText(cboPatientID.SelectedIndex) + "'", conn);
if (txtDID.Text.Length > 5)
{
txtDID.Text = txtDID.Text.Substring(5);
}
DataTable dt = new DataTable();
if (dt.Rows.Count == -1)
{
if ((cmd.Parameters.AddWithValue("@virology", SqlDbType.Int).Value.GetHashCode() == 0))
{
txtDID.Text = txtDID.Text + 1;
}
else
{
txtDID.Text = txtDID.Text + 0;
}
}
}
}
private void btnAssign_Click(object sender, EventArgs e)
{
string dFieldName = "";
Boolean vEmptyB = false;
if (cboManufacturer.Text.ToString().Trim() == "")
{
vEmptyB = true;
dFieldName = "Please select a Manufacturer";
}
else if (cboequipmentType.Text.ToString().Trim() == "")
{
vEmptyB = true;
dFieldName = "Please select size of dialyzer";
}
else if (txtMFRRefNo.Text.ToString().Trim() == "")
{
vEmptyB = true;
dFieldName = "Please enter reference number of the dialyzer";
}
else if (txtMFRLotNo.Text.ToString().Trim() == "")
{
vEmptyB = true;
dFieldName = "Please enter lot number of the dialyzer";
}
else if (txtPVol.Text.ToString().Trim() == "")
{
vEmptyB = true;
dFieldName = "Please enter packed volume of the dialyzer";
}
else if (cboPatientID.SelectedIndex == -1)
{
vEmptyB = true;
dFieldName = "Please select Patient ID";
}
if (vEmptyB == true)
{
MessageBox.Show(dFieldName + "should not be empty");
return;
}
SqlConnection conn = new SqlConnection("Data Source=NPD-4\\SQLEXPRESS;Initial Catalog=DRRS;Integrated Security=true");
if (conn.State != ConnectionState.Open)
{
conn.Open();
}
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
int autoGenId = -1;
cmd = new SqlCommand("Insert into dialyser(dialyserID,manufacturer,mfr_ref_number,mfr_lot_number,mfr_date,exp_date,start_date,packed_volume,dialyzer_size,patient_id,row_upd_date,user_id)" + "Values(@dialyserID,@manufacturer,@mfr_ref_number,@mfr_lot_number,@mfr_date,@exp_date,@start_date,@packed_volume,@dialyzer_size,@patient_id,GetDate(),@user_id);Select @autoGenId = SCOPE_IDENTITY();", conn);
cmd.Parameters.AddWithValue("@dialyserID", txtDID.Text.ToString());
cmd.Parameters.AddWithValue("@manufacturer", cboManufacturer.Text.ToString());
cmd.Parameters.AddWithValue("@mfr_ref_number", txtMFRRefNo.Text.ToString());
cmd.Parameters.AddWithValue("@mfr_lot_number", txtMFRLotNo.Text.ToString());
cmd.Parameters.AddWithValue("@mfr_date", dtMFRDate.Value);
cmd.Parameters.AddWithValue("@exp_date", dtExpDate.Value);
cmd.Parameters.AddWithValue("@start_date", dtStartDate.Value);
cmd.Parameters.AddWithValue("@packed_volume", txtPVol.Text.ToString());
cmd.Parameters.AddWithValue("@dialyzer_size", cboequipmentType.Text.ToString());
cmd.Parameters.AddWithValue("@patient_id", cboPatientID.GetItemText(cboPatientID.SelectedIndex));
cmd.Parameters.AddWithValue("@user_id", pUserID);
cmd.Parameters.Add("@autoGenId", SqlDbType.Int).Direction = ParameterDirection.Output;
cmd.ExecuteNonQuery();
autoGenId = Convert.ToInt32(cmd.Parameters["@autoGenId"].Value);
((MDIParent1)this.MdiParent).updateUserActivities(autoGenId, 4, txtDID.Text.ToString() + "Dialyzer detail was successfully assigned to the patient-(" + cboPatientID.GetItemText(cboPatientID.SelectedIndex) + ")");
if (MessageBox.Show("Dialyzer detail was successfully added. Do you want to print the barcode dialyzerID?", "DRRS", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
{
}
}
private void button1_Click(object sender, EventArgs e)
{
if (txtDID.Tag.ToString() == "0")
{
btnNext.Enabled = true;
button1.Enabled = false;
txtDID.Enabled = false;
barCDialyzer.Alphabet = STROKESCRIBELib.enumAlphabet.AZTEC;
barCDialyzer.CtlText = txtDID.Text + (char)9;
barCOrg.Alphabet = STROKESCRIBELib.enumAlphabet.AZTEC;
barCOrg.CtlText = txtDID.Text + (char)9;
int rc = 0;
rc = barCOrg.SavePicture("D:\\Workarea\vishal\\DRRS in CSharp\\DRRS CSharp\\DRRS CSharp\bar1.bmp", STROKESCRIBELib.enumFormats.BMP, barCOrg.BitmapW, barCOrg.BitmapH);
if (rc > 0)
{
MessageBox.Show(barCOrg.ErrorDescription);
}
}
}
private void btnSearch_Click(object sender, EventArgs e)
{
string dPatientID;
dPatientID = cboPatientID.GetItemText(cboPatientID.SelectedIndex);
frmPatient p = new frmPatient();
p.loadPatient(dPatientID);
p.Show();
}
private void dtMFRDate_ValueChanged(object sender, EventArgs e)
{
dtStartDate.MinDate =dtStartDate.Value;
}
private void txtPVol_TextChanged(object sender, EventArgs e)
{
if (System.Text.RegularExpressions.Regex.IsMatch("[^0-9]", txtPVol.Text))
{
MessageBox.Show("Packed volume should be numeric.");
txtPVol.Text.Remove(txtPVol.Text.Length - 1);
}
}where frmDialyzer is name of my form.
As you can see all my combobox functions works perfectly according to my expectations. But here is the problem the code works till it comes or shows GrpStep1 and after that the code does not perform any process.
Given below is code the same thing which i have done in vb6 with ms access with adodb and it works.
Option Explicit
Dim dStepIndex As Integer
Dim inst As String
Private Sub loadPatientID()
On Error GoTo errh
Dim vSQLStr As String
Dim LPatientID As String
vSQLStr = "select p.patient_id as patient_id,n.patient_first_name as patient_fname, n.patient_last_name as patient_lname from patient_name n,patient_id p where n.patient_id=p.patient_id and n.status = true and p.patient_id not in (select patient_id from dialyser where deleted_status=false);"
Dim oRS As New ADODB.Recordset
If (adoDatabase.State = 0) Then
adoDatabase.Open
End If
oRS.Open vSQLStr, adoDatabase, adOpenForwardOnly, adLockReadOnly
cboPatientID.Clear
Do While Not oRS.EOF
'// Do something with the data'
LPatientID = oRS.Fields("patient_id").Value
LPatientID = Replace(Space(6 - Len(LPatientID)) & LPatientID, " ", "0")
cboPatientID.AddItem oRS.Fields("patient_fname").Value & " " & oRS.Fields("patient_lname").Value & "|" & LPatientID
cboPatientID.ItemData(cboPatientID.NewIndex) = oRS.Fields("patient_id").Value
oRS.MoveNext
Loop
oRS.Close
Exit Sub
errh:
MsgBox Err.Description, vbCritical
End Sub
Private Sub loadManufacurer()
On Error GoTo errh
Dim vSQLStr As String
vSQLStr = "select distinct(ManufacturerName) from EquipmentData"
Dim oRS As New ADODB.Recordset
oRS.Open vSQLStr, adoDatabase, adOpenForwardOnly, adLockReadOnly
cboManufacturer.Clear
Do While Not oRS.EOF
'// Do something with the data'
cboManufacturer.AddItem oRS.Fields("ManufacturerName").Value
oRS.MoveNext
Loop
oRS.Close
Exit Sub
errh:
MsgBox Err.Description, vbCritical
End Sub
Private Sub cboequipmentType_Click()
On Error GoTo errh
If cboequipmentType.ListIndex = -1 Then Exit Sub
Dim vSQLStr As String
vSQLStr = "select * from EquipmentData where Manufacturername='" & cboManufacturer.Text & "' and volume='" & cboequipmentType.Text & "' and status=true"
Dim oRS As New ADODB.Recordset
oRS.Open vSQLStr, adoDatabase, adOpenForwardOnly, adLockReadOnly
If oRS.EOF = False Then
'// Do something with the data'
If IsNull(oRS.Fields("packed_volume").Value) = False Then
TxtPVol.Text = oRS.Fields("packed_volume").Value
End If
oRS.MoveNext
End If
oRS.Close
' oRS.Open "select * from application_preferences where status=true", adoDatabase, adOpenForwardOnly, adLockReadOnly
'
' If (oRS.EOF = False) Then
' TxtPVol.Text = oRS.Fields("bundle_volume").Value
' End If
' oRS.Close
Exit Sub
errh:
MsgBox Err.Description, vbCritical
End Sub
Private Sub cboManufacturer_Click()
On Error GoTo errh
If cboManufacturer.ListIndex = -1 Then Exit Sub
Dim vSQLStr As String
vSQLStr = "select distinct(volume) from EquipmentData where Manufacturername='" & cboManufacturer.Text & "'"
Dim oRS As New ADODB.Recordset
oRS.Open vSQLStr, adoDatabase, adOpenForwardOnly, adLockReadOnly
cboequipmentType.Clear
Do While Not oRS.EOF
'// Do something with the data'
cboequipmentType.AddItem oRS.Fields("volume").Value
oRS.MoveNext
Loop
oRS.Close
Exit Sub
errh:
MsgBox Err.Description, vbCritical
End Sub
Private Sub cboPatientID_Click()
On Error GoTo errh
If (cboPatientID.ListIndex <> -1) Then
cmdSearch.Enabled = True
Command5.Enabled = True
Dim rs1 As ADODB.Recordset
Dim vFieldNameStr As String
Set rs1 = New ADODB.Recordset
If (adoDatabase.State = 0) Then
adoDatabase.Open
End If
rs1.Open "select * from patient_name where status=true and patient_id=" & cboPatientID.ItemData(cboPatientID.ListIndex), adoDatabase, adOpenForwardOnly, adLockReadOnly
If Len(TxtDID.Text) > 5 Then
TxtDID.Text = Left(TxtDID.Text, 5)
End If
If (rs1.EOF = False) Then
If (rs1.Fields("virology ").Value = 0) Then
TxtDID.Text = TxtDID.Text & 1
Else
TxtDID.Text = TxtDID.Text & 0
End If
Else
TxtDID.Text = TxtDID.Text & 0
End If
lblPID.Caption = Left(cboPatientID.Text, InStr(1, cboPatientID.Text, "|", vbTextCompare) - 1) & " - " & Mid(cboPatientID.Text, InStr(1, cboPatientID.Text, "|", vbTextCompare) + 1)
barCDialyzer.Alphabet = CODE128
barCDialyzer.Text = TxtDID.Text & Chr(9)
barCOrg.Alphabet = CODE128
barCOrg.Text = TxtDID.Text & Chr(9)
Dim bar_w As Long
Dim rc As Long
bar_w = barCOrg.BitmapW
rc = barCOrg.SavePicture(App.Path & "\barcode.bmp", BMP, bar_w * 2, bar_w)
If rc > 0 Then
MsgBox barCOrg.ErrorDescription
End If
Else
cmdSearch.Enabled = False
Command5.Enabled = False
End If
Exit Sub
errh:
MsgBox Err.Description, vbCritical
End Sub
Private Sub cmdNext_Click()
On Error GoTo errh
If (fmeDEntry.Visible = True) Then
fmeDEntry.Visible = False
fmeStep1.Caption = "Step 2"
If (optDEntry1.Value = False) Then
fmeBarCode.Visible = False
End If
Else
If dStepIndex = 0 Then
Dim vEmptyB As Boolean
Dim vFieldNameStr As String
If cboManufacturer.Text = "" Then
vEmptyB = True
vFieldNameStr = "Manufacturer"
ElseIf Trim(cboequipmentType.Text) = "" Then
vEmptyB = True
vFieldNameStr = "Size"
' ElseIf Trim(TxtMFRRefNo.Text) = "" Then
' vEmptyB = True
' vFieldNameStr = "MFR Ref No"
ElseIf Trim(TxtMFRLotNo.Text) = "" Then
vEmptyB = True
vFieldNameStr = "MFR Lot No"
ElseIf Trim(TxtPVol.Text) = "" Then
vEmptyB = True
vFieldNameStr = "Packed Volume"
End If
If vEmptyB = True Then
MsgBox vFieldNameStr & " should not be empty", vbCritical
Exit Sub
End If
Dim vSQLStr As String
Dim dDID As String
vSQLStr = "select max(agn) from dialyser"
Dim oRS As New ADODB.Recordset
oRS.Open vSQLStr, adoDatabase, adOpenForwardOnly, adLockReadOnly
If Not oRS.EOF Then
If (IsNull(oRS.Fields(0).Value)) Then
dDID = "1"
Else
dDID = oRS.Fields(0).Value + 1
End If
TxtDID.Text = Replace(Space(5 - Len(dDID)) & dDID, " ", "0")
Else
TxtDID.Text = Replace(Space(5 - Len("1")) & "1", " ", "0")
End If
oRS.Close
fmeStep1.Visible = False
fmeStep2.Visible = True
fmeStep3.Visible = False
dStepIndex = 2
cmdNext.Enabled = False
Command1.Enabled = False
TxtDID.SetFocus
ElseIf dStepIndex = 2 Then
fmeStep1.Visible = False
fmeStep2.Visible = False
fmeStep3.Visible = True
dStepIndex = 3
cmdNext.Visible = False
End If
End If
Exit Sub
errh:
MsgBox Err.Description, vbCritical
End Sub
Private Sub Form_Load()
dtMFRExpDate.MinDate = Now
dtMFRDate.MaxDate = Now
loadPatientID
loadManufacurer
dStepIndex = 0
fmeStep1.Visible = True
fmeStep2.Visible = False
fmeStep3.Visible = False
dtMFRStartDate.MinDate = Now
End Subwhat i want is in my c# code with sql server 2008 after processing till GrpStep1 upon clicking on next button in my frmDialyzer form i want to go to GrpStep2 and GrpStep3.
You can in my vb6 code the processing of each frame is done through value of dStepIndex value in my form in vb6.
I know i have to do some modifications in my c# code but i dont know how to do it can anyone help me please.! If anyone wants any details regarding controls in each group box please ask me in order to help me please ask.! Any help or guidance in solving
this problem would be greatly appreciated.
vishal