2013-02-25 48 views
-3

我正在創建一個程序,我想限制一個字符串插入到我的Database有人可以告訴我該怎麼做嗎?設置文本框的有效值

截至目前這裏是我的代碼:

Dim SQLcon As New SqlConnection 
     Dim SQLdr As SqlDataReader 
     Try 
      SQLcon.ConnectionString = "Data Source=#### ;Initial Catalog=####;Persist Security Info=True;User ID=####;Password=####" 
      Dim SQLcmd As New SqlCommand("INSERT INTO dbo.Patients" & _ 
             "(pIDNo,pLName,pFName,pMI,pSex,pStatus,pTelNo,pDocID,pAddr,pStreet,pBarangay,pCity,pProvince,pLNameKIN,pFNameKIN,pMIKIN,pRelationKIN,pTotalDue)" & _ 
             "VALUES(@pIDNo,@pLName,@pFName,@pMI,@pSex,@pStatus,@pTelNo,@pDocID,@pAddr,@pStreet,@pBarangay,@pCity,@pProvince,@pLNameKIN,@pFNameKIN,@pMIKIN,@pRelationKIN,@totaldue)", SQLcon) 
      SQLcmd.Parameters.AddWithValue("@pIDNo", txtPNumber.Text) 
      SQLcmd.Parameters.AddWithValue("@pLName", txtLname.Text) 
      SQLcmd.Parameters.AddWithValue("@pFName", txtFname.Text) 
      SQLcmd.Parameters.AddWithValue("@pMI", txtMI.Text) 
      SQLcmd.Parameters.AddWithValue("@pSex", txtPatientSex.Text) 
      SQLcmd.Parameters.AddWithValue("@pStatus", txtStatus.Text) 
      SQLcmd.Parameters.AddWithValue("@pTelNo", txtPatientTelNo.Text) 
      SQLcmd.Parameters.AddWithValue("@pDocID", txtPatientDoctor.Text) 
      SQLcmd.Parameters.AddWithValue("@pAddr", txtStreetNumber.Text) 
      SQLcmd.Parameters.AddWithValue("@pStreet", txtStreetName.Text) 
      SQLcmd.Parameters.AddWithValue("@pBarangay", txtBarangay.Text) 
      SQLcmd.Parameters.AddWithValue("@pCity", txtCity.Text) 
      SQLcmd.Parameters.AddWithValue("@pProvince", txtProvince.Text) 
      SQLcmd.Parameters.AddWithValue("@pLnameKIN", txtKinLname.Text) 
      SQLcmd.Parameters.AddWithValue("@pFnameKIN", txtKinFname.Text) 
      SQLcmd.Parameters.AddWithValue("@pMIKIN", txtKinMI.Text) 
      SQLcmd.Parameters.AddWithValue("@pRelationKIN", txtRelationToPatient.Text) 
      SQLcmd.Parameters.Add("@totaldue", SqlDbType.Money).Value = Decimal.Parse(txtTotalDue.Text) 
      SQLcon.Open() 
      MsgBox("Patient Added!", MsgBoxStyle.Information) 
      SQLdr = SQLcmd.ExecuteReader() 
     Catch ex As Exception 
      MessageBox.Show("Error Occured, Can't Add Patient!" & ex.Message) 
     Finally 
      SQLcon.Close() 
     End Try 
     Return "" 
txtSex.Text

我只希望用戶僅輸入「M」代表男性,「F」爲女

txtStatus.Text

我只希望用戶輸入'S'爲單身,'M'爲已婚,'W'爲寡婦,'H'爲分開

一件事:

txtMItxtMIKIN是有可能做用戶輸入一個值後轉換?

實施例:

如果用戶輸入 'A,B,C,d,E,F,G,H,I,J,K,L,M,.......' 作爲他/她的中間首字母將自動插入我的Database

+1

您應該使用,而不是'TextBox'一個'ComboBox'。它會讓你的生活變得更輕鬆。 – 2013-02-25 02:33:51

+0

但是對於中年人來說沒有必要,因爲有時候有些人有2個M.I. ,而我的老闆說我只能使用文本框...... – Danjor 2013-02-25 02:35:19

+0

我不知道你到底需要什麼,但是我知道,我總是使用'combobox'作爲你的答案的確切選項。首先,爲了避免用戶輸入錯誤,所以當我們插入數據庫時​​,所有來自用戶的結果都是非標準的,其次,幫助用戶重新輸入所有相同的結果。 – ksugiarto 2013-02-25 02:48:45

回答

1

由於約combobox已被回答。

我想回答關於更改爲UPPERCASE

您可以使用這些類型的代碼。

方式#1

Dim upper as string = (txtMI.text.ToUpper()) 

方式#2

Dim upper as string = (UCase(txtMI.text)) 

方式#3

Dim upper as string = (StrConv(txtMI.text,VbStrConv.UpperCase)) 
+0

lemme試試這一個sir kolonel :) – Danjor 2013-02-25 03:10:33

+0

我應該在哪裏放這些代碼?我在這裏遇到了麻煩>​​ < – Danjor 2013-02-25 03:16:41

+0

您可以像平常一樣在代碼的頂部初始化,只需放上'upper =(txtMI.text.ToUpper())'或2個else。它的工作方式是將你的'txtMI'文本框中的值轉換爲大寫字母,並將其保存到名爲upper(可選名稱)的變量中。當你想要插入數據庫時​​,不再需要''上層'而不是'txtMI.text'。 – ksugiarto 2013-02-25 03:21:50

1
中的「A,B,C,D,E,F,G,H,I,J,K,L,M ......」

您插入數據,所以你需要調用:

SQLcmd.ExecuteNonQuery() 

而不是

SQLcmd.ExecuteReader() 
+0

'Integer'類型的值無法轉換爲'System.Data.SqlClient.SqlCommand' – Danjor 2013-02-25 03:09:01

+0

我並不是說你的回答是錯誤的我只是發佈只顯示在我的屏幕上的錯誤,我將它發佈在這裏,因爲我不知道如何解決它...>< – Danjor 2013-02-25 03:17:45

+0

使用AddWithValue()的問題是它可能會做出錯誤的選擇。更加明確你的數據類型:使用Add() – 2013-02-25 03:18:44

0
txtMI.Text = StrConv(txtMI.Text, VbStrConv.Uppercase) this codes solve my problem...