PDA

View Full Version : مبتدی: رفع مشکلات برنامه من



nefrat
شنبه 13 فروردین 1390, 20:13 عصر
سلام...
دارم یه برنامه مینویسم که خیلی جزیی هست مال بیمارستانه...میخوام اگه میشه کمکم کنید...
از فرم بیمار شروع کنم : که کل برنامهایی که نوشتم اینه


Imports System.Data '' baraye ADO.Net
Imports System.Data.SqlClient '' SQLSERVER
Public Class Bimaran
Dim constr As String = " Data Source=.\SQLEXPRESS;AttachDbFilename=N:\Hospital\s hafagh.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"
Dim con As New SqlConnection(constr)
Dim da As SqlDataAdapter
Dim ds As New DataSet

Private Sub Bimaran_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'TODO: This line of code loads data into the 'ShafaghDataSet.Bimar' table. You can move, or remove it, as needed.
Me.BimarTableAdapter.Fill(Me.ShafaghDataSet.Bimar)
Try
con.Open()
Dim cmdstr As String = "select * from Bimar"
da = New SqlDataAdapter(cmdstr, con)
da.Fill(ds, "Paz_bakhsh")
Tfname.DataBindings.Add(New Binding("text", ds, "Bimar.Fname"))
Tlname.DataBindings.Add(New Binding("text", ds, "Bimar.LName"))
Tsex.DataBindings.Add(New Binding("text", ds, "Bimar.Sex"))
Tshsh.DataBindings.Add(New Binding("text", ds, "Bimar.SHSH"))
Tmeli.DataBindings.Add(New Binding("text", ds, "Bimar.Meli_code"))
Tadd1.DataBindings.Add(New Binding("text", ds, "Bimar.Add1"))
Tadd2.DataBindings.Add(New Binding("text", ds, "Bimar.Add2"))
Tmo.DataBindings.Add(New Binding("text", ds, "Bimar.B_Date_Mo"))
Tye.DataBindings.Add(New Binding("text", ds, "Bimar.B_Date_Ye"))
Tda.DataBindings.Add(New Binding("text", ds, "Bimar.B_Date_Da"))
Tbime.DataBindings.Add(New Binding("text", ds, "Bimar.Bime"))
Tcodbime.DataBindings.Add(New Binding("text", ds, "Bimar.Bbimecod"))
TFathername.DataBindings.Add(New Binding("text", ds, "Bimar.Father_name"))
Tphon.DataBindings.Add(New Binding("text", ds, "Bimar.Phone"))
Tmob.DataBindings.Add(New Binding("text", ds, "Bimar.Mobile"))
Tbakhshn.DataBindings.Add(New Binding("text", ds, "Bimar.bakhsh"))
Tdocnam.DataBindings.Add(New Binding("text", ds, "Bimar.Dr_name"))
Tsharh.DataBindings.Add(New Binding("text", ds, "Bimar.sharh"))
Tpazye.DataBindings.Add(New Binding("text", ds, "Bimar.paz_date_ye"))
Tpazmo.DataBindings.Add(New Binding("text", ds, "Bimar.paz_date_mo"))
Tpazda.DataBindings.Add(New Binding("text", ds, "Bimar.paz_date_da"))
TshshS.DataBindings.Add(New Binding("text", ds, "Bimar.shsh"))
Tsabeghe.DataBindings.Add(New Binding("text", ds, "Bimar.sabeghe"))
lblID.DataBindings.Add(New Binding("text", ds, "Bimar.ID"))
lblDB.Text = "بانک متصل است"
Catch ex As Exception
lblcon.Text = ex.Message
Finally
con.Close()
End Try
End Sub


Private Sub Button17_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd.Click
Dim cmd As New SqlCommand("insert into Bimar(ID,FName,LName,Father_name,SHSH,Meli_code,B_ Date_Mo,B_Date_Ye,B_Date_Da,Sex,Add1,Add2,Phone,Mo bile,Bime,Bbimecod,Sabeghe,r_name,sharh,paz_date_y e,paz_date_mo,paz_date_da,bakhsh)Values(@ID,@FName ,@LName,@Father_name,@SHSH,@Meli_code,@B_Date_Mo,@ B_Date_Ye,@B_Date_Da,@Sex,@Add1,@Add2,@Phone,@Mobi le,@Bime,@Bbimecod,@Sabeghe,@Dr_name,@sharh,@paz_d ate_ye,@paz_date_mo,@paz_date_da,@bakhsh)", con)
Try
con.Open()
cmd.Parameters.Add("@ID", SqlDbType.Int).Value = lblID.Text
cmd.Parameters.Add("@FName", SqlDbType.NVarChar).Value = Tfname.Text
cmd.Parameters.Add("@LName", SqlDbType.NVarChar).Value = Tlname.Text
cmd.Parameters.Add("@Father_name", SqlDbType.NVarChar).Value = TFathername.Text
cmd.Parameters.Add("@SHSH", SqlDbType.NVarChar).Value = Tshsh.Text
cmd.Parameters.Add("@SHSH", SqlDbType.NVarChar).Value = TshshS.Text
cmd.Parameters.Add("@Meli_code", SqlDbType.NVarChar).Value = Tmeli.Text
cmd.Parameters.Add("@B_Date_Mo", SqlDbType.Int).Value = Tmo.Text
cmd.Parameters.Add("@B_Date_Ye", SqlDbType.Int).Value = Tye.Text
cmd.Parameters.Add("@B_Date_Da", SqlDbType.Int).Value = Tda.Text
cmd.Parameters.Add("@Sex", SqlDbType.NChar).Value = Tsex.Text
cmd.Parameters.Add("@Add1", SqlDbType.NVarChar).Value = Tadd1.Text
cmd.Parameters.Add("@Add2", SqlDbType.NVarChar).Value = Tadd2.Text
cmd.Parameters.Add("@Phone", SqlDbType.Int).Value = Tphon.Text
cmd.Parameters.Add("@Mobile", SqlDbType.Int).Value = Tmob.Text
cmd.Parameters.Add("@Bime", SqlDbType.NVarChar).Value = Tbime.Text
cmd.Parameters.Add("@Bbimecod", SqlDbType.Int).Value = Tcodbime.Text
cmd.Parameters.Add("@Sabeghe", SqlDbType.NVarChar).Value = Tsabeghe.Text
cmd.Parameters.Add("@Dr_name", SqlDbType.NVarChar).Value = Tdocnam.Text
cmd.Parameters.Add("@sharh", SqlDbType.NVarChar).Value = Tsharh.Text
cmd.Parameters.Add("@paz_date_ye", SqlDbType.Int).Value = Tpazye.Text
cmd.Parameters.Add("@paz_date_mo", SqlDbType.Int).Value = Tpazmo.Text
cmd.Parameters.Add("@paz_date_da", SqlDbType.Int).Value = Tpazda.Text
cmd.Parameters.Add("@bakhsh", SqlDbType.NVarChar).Value = Tbakhshn.Text
cmd.ExecuteNonQuery()
ds.Clear()
da.Fill(ds, "Bimar")
da.Update(ds, "Bimar")
lblDB.Text = "بانک متصل است"
Catch ex As Exception
lblcon.Text = ex.Message
Finally
con.Close()

End Try

End Sub
End ClassEnd Class




اما وقتی show میکنم به جای اتصال برقراره ( بانک وصله) میگه :

child list for field Bimar cannot be created

میشه بگید چی کار کنم ؟

و وقتی که دکمه ثبت و میزنم میگه :

failed to convert parameter value from a string to a int 32

amirsadeghi
شنبه 13 فروردین 1390, 20:25 عصر
cmd.Parameters.Add("@B_Date_Mo", SqlDbType.Int).Value = Tmo.Text
cmd.Parameters.Add("@B_Date_Ye", SqlDbType.Int).Value = Tye.Text
cmd.Parameters.Add("@B_Date_Da", SqlDbType.Int).Value = Tda.Text

خطای دومی تو این خطها و یا شایدم جاهای دیگه اتفاق میافته
شما داری مقدار تکست رو میریزی توی فیلد عددی

amirsadeghi
شنبه 13 فروردین 1390, 20:28 عصر
خطای اولی هم فکر کنم مال این باشه که تو form_load نوشتی برنامه رو!
معمولا تو این رویداد کدهای دسترسی به کنترل ها رو نباید قرار بدید!

nefrat
شنبه 13 فروردین 1390, 20:36 عصر
نه آخه میدونی توی فرم لود نوشتم که اگه اتصال برقرار شد رکورد اول منو نشون بده توی تکست هام تا مطمئن شم ...
و اینکه اگه توی فرم ننویسم بیارم توی همون دکمه ثبت بنویسم!؟
و اینکه اون 3 خطی که گفتید کجاش ایراد داره ؟ نوع اونها هم توی جدول و هم اینجا یکسانه!

amirsadeghi
شنبه 13 فروردین 1390, 20:44 عصر
میتونی از form_activate استفاده کنی
یا در انتهای form_load یه تابع که مختص اینکاره رو صدا بزنی
در مورد دومی اینکه مقداری که تو خاصیت text یه تکست باکس هست به صورت رشته ایه حتی اگه عدد باشه
یعنی مثلا 123 نیست بلکه "123" هست!
پس باید تبدیل بشه به عدد

nefrat
شنبه 13 فروردین 1390, 20:55 عصر
منظورت اینکه بگم val(text.text) ????

یا اینکه کدی که توی فرم لود نوشتم text ها رو تغییر بدم !؟


Tmo.DataBindings.Add(New Binding("int", ds, "Bimar.B_Date_Mo"))

amirsadeghi
شنبه 13 فروردین 1390, 21:03 عصر
توی button7_click اونجایی که داری به فیلدهات مقدار میدی دقت کن که مقداری که داری میدی نوعش با نوع فیلد یکی باشه
یعنی
cmd.Parameters.Add("@B_Date_Mo", SqlDbType.Int).Value =val( Tmo.Text)

یا convert.toint32

nefrat
یک شنبه 14 فروردین 1390, 13:46 عصر
من الان تغییرش دادم به این حالت درسته؟ منظورتون همین بود؟



Imports System.Data '' baraye ADO.Net
Imports System.Data.SqlClient '' SQLSERVER
Public Class Bimaran
Dim constr As String = " Data Source=.\SQLEXPRESS;AttachDbFilename=N:\Hospital\s hafagh.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"
Dim con As New SqlConnection(constr)
Dim da As SqlDataAdapter
Dim ds As New DataSet

Private Sub Bimaran_activate(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'TODO: This line of code loads data into the 'ShafaghDataSet.Bimar' table. You can move, or remove it, as needed.
Me.BimarTableAdapter.Fill(Me.ShafaghDataSet.Bimar)
Try
con.Open()
Dim cmdstr As String = "select * from Bimar"
da = New SqlDataAdapter(cmdstr, con)
da.Fill(ds, "Paz_bakhsh")
Tfname.DataBindings.Add(New Binding("text", ds, "Bimar.Fname"))
Tlname.DataBindings.Add(New Binding("text", ds, "Bimar.LName"))
Tsex.DataBindings.Add(New Binding("text", ds, "Bimar.Sex"))
Tshsh.DataBindings.Add(New Binding("text", ds, "Bimar.SHSH"))
Tmeli.DataBindings.Add(New Binding("text", ds, "Bimar.Meli_code"))
Tadd1.DataBindings.Add(New Binding("text", ds, "Bimar.Add1"))
Tadd2.DataBindings.Add(New Binding("text", ds, "Bimar.Add2"))
Tmo.DataBindings.Add(New Binding("text", ds, "Bimar.B_Date_Mo"))
Tye.DataBindings.Add(New Binding("text", ds, "Bimar.B_Date_Ye"))
Tda.DataBindings.Add(New Binding("text", ds, "Bimar.B_Date_Da"))
Tbime.DataBindings.Add(New Binding("text", ds, "Bimar.Bime"))
Tcodbime.DataBindings.Add(New Binding("text", ds, "Bimar.Bbimecod"))
TFathername.DataBindings.Add(New Binding("text", ds, "Bimar.Father_name"))
Tphon.DataBindings.Add(New Binding("text", ds, "Bimar.Phone"))
Tmob.DataBindings.Add(New Binding("text", ds, "Bimar.Mobile"))
Tbakhshn.DataBindings.Add(New Binding("text", ds, "Bimar.bakhsh"))
Tdocnam.DataBindings.Add(New Binding("text", ds, "Bimar.Dr_name"))
Tsharh.DataBindings.Add(New Binding("text", ds, "Bimar.sharh"))
Tpazye.DataBindings.Add(New Binding("text", ds, "Bimar.paz_date_ye"))
Tpazmo.DataBindings.Add(New Binding("text", ds, "Bimar.paz_date_mo"))
Tpazda.DataBindings.Add(New Binding("text", ds, "Bimar.paz_date_da"))
TshshS.DataBindings.Add(New Binding("text", ds, "Bimar.shsh"))
Tsabeghe.DataBindings.Add(New Binding("text", ds, "Bimar.sabeghe"))
lblID.DataBindings.Add(New Binding("text", ds, "Bimar.ID"))
lblDB.Text = "بانک متصل است"
Catch ex As Exception
lblcon.Text = ex.Message
Finally
con.Close()
End Try
End Sub


Private Sub Button17_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd.Click
Dim cmd As New SqlCommand("insert into Bimar(ID,FName,LName,Father_name,SHSH,Meli_code,B_ Date_Mo,B_Date_Ye,B_Date_Da,Sex,Add1,Add2,Phone,Mo bile,Bime,Bbimecod,Sabeghe,r_name,sharh,paz_date_y e,paz_date_mo,paz_date_da,bakhsh)Values(@ID,@FName ,@LName,@Father_name,@SHSH,@Meli_code,@B_Date_Mo,@ B_Date_Ye,@B_Date_Da,@Sex,@Add1,@Add2,@Phone,@Mobi le,@Bime,@Bbimecod,@Sabeghe,@Dr_name,@sharh,@paz_d ate_ye,@paz_date_mo,@paz_date_da,@bakhsh)", con)
Try
con.Open()
cmd.Parameters.Add("@ID", SqlDbType.Int).Value = Val(lblID.Text)
cmd.Parameters.Add("@FName", SqlDbType.NVarChar).Value = Tfname.Text
cmd.Parameters.Add("@LName", SqlDbType.NVarChar).Value = Tlname.Text
cmd.Parameters.Add("@Father_name", SqlDbType.NVarChar).Value = TFathername.Text
cmd.Parameters.Add("@SHSH", SqlDbType.NVarChar).Value = Tshsh.Text
cmd.Parameters.Add("@SHSH", SqlDbType.NVarChar).Value = TshshS.Text
cmd.Parameters.Add("@Meli_code", SqlDbType.NVarChar).Value = Tmeli.Text
cmd.Parameters.Add("@B_Date_Mo", SqlDbType.Int).Value = Val(Tmo.Text)
cmd.Parameters.Add("@B_Date_Ye", SqlDbType.Int).Value = Val(Tye.Text)
cmd.Parameters.Add("@B_Date_Da", SqlDbType.Int).Value = Val(Tda.Text)
cmd.Parameters.Add("@Sex", SqlDbType.NChar).Value = Tsex.Text
cmd.Parameters.Add("@Add1", SqlDbType.NVarChar).Value = Tadd1.Text
cmd.Parameters.Add("@Add2", SqlDbType.NVarChar).Value = Tadd2.Text
cmd.Parameters.Add("@Phone", SqlDbType.Int).Value = Val(Tphon.Text)
cmd.Parameters.Add("@Mobile", SqlDbType.Int).Value = Val(Tmob.Text)
cmd.Parameters.Add("@Bime", SqlDbType.NVarChar).Value = Tbime.Text
cmd.Parameters.Add("@Bbimecod", SqlDbType.Int).Value = Val(Tcodbime.Text)
cmd.Parameters.Add("@Sabeghe", SqlDbType.NVarChar).Value = Tsabeghe.Text
cmd.Parameters.Add("@Dr_name", SqlDbType.NVarChar).Value = Tdocnam.Text
cmd.Parameters.Add("@sharh", SqlDbType.NVarChar).Value = Tsharh.Text
cmd.Parameters.Add("@paz_date_ye", SqlDbType.Int).Value = Val(Tpazye.Text)
cmd.Parameters.Add("@paz_date_mo", SqlDbType.Int).Value = Val(Tpazmo.Text)
cmd.Parameters.Add("@paz_date_da", SqlDbType.Int).Value = Val(Tpazda.Text)
cmd.Parameters.Add("@bakhsh", SqlDbType.NVarChar).Value = Tbakhshn.Text
cmd.ExecuteNonQuery()
ds.Clear()
da.Fill(ds, "Bimar")
da.Update(ds, "Bimar")
lblDB.Text = "بانک متصل است"
Catch ex As Exception
lblcon.Text = ex.Message
Finally
con.Close()

End Try

End Sub

Private Sub TextBox64_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox64.TextChanged

End Sub
End Class

amirsadeghi
یک شنبه 14 فروردین 1390, 14:07 عصر
اون قسمتش درست شد. تست کردی ببینی بازم خطا داره یا نه؟

nefrat
یک شنبه 14 فروردین 1390, 14:27 عصر
بله تست کردم اما موقعی که اجرا میکنم میگه child list for field Bimar cannot be created

nefrat
یک شنبه 14 فروردین 1390, 14:27 عصر
وقتی داده میدم میگه :

The variable name '@SHSH' has already been declared. Variable names must be unique within a query batch or stored procedure.

Must declare the scalar variable "@Meli_code".

nefrat
یک شنبه 14 فروردین 1390, 17:15 عصر
یکی نیست به من کمک کنه!؟

amirsadeghi
یک شنبه 14 فروردین 1390, 20:30 عصر
خب شما shsh رو 2 بار مقدار دهی کردی فکر کنم
یه بار با حروف بزرگ نوشتی یه بار با حروف کوچیک!

nefrat
دوشنبه 15 فروردین 1390, 22:48 عصر
مرسی ممنون درست شد....
حالا ببینید میشه کمک کنید برای حذف؟


این کدی هست که نوشتم اما خوب مسلما کار نمیکنه ... :D
راهنمایی میکنید؟ میخوام وقتی توی تکست شماره شناسنامه زد اول اطلاعات بیاد توی تکست باکس ها مثل سرچ بعد با زدن دکمه delet حذف شه !!!

[VB]


Private Sub MyDataGrid_Delete(ByVal sender As Object, ByVal E As DataGridCommandEventArgs)
Dim deleteCmd As String = "DELETE FROM bimar WHERE Tshshs.text = @shsh;"
Dim myCommand As SqlCommand = New SqlCommand(deleteCmd, con)
myCommand.Parameters.Add(New SqlParameter("@SHSH", SqlDbType.NVarChar, 11))
myCommand.Parameters("@SHSH").Value = DG2.DataKeys(CInt(E.Item.ItemIndex)
myCommand.Connection.Open()
Try
myCommand.ExecuteNonQuery()
LBLdel.Text = "Record Deleted"
Catch ex As SqlException
LBLdel.Text = "ERROR: Could not delete record"
LBLdel.ForeColor = Color.Red
End Try

myCommand.Connection.Close()

BindGrid()
End Sub

Public Sub BindGrid()
Dim myCommand As SqlDataAdapter = New SqlDataAdapter("SELECT *" & " FROM bimaran", con)
Dim ds As DataSet = New DataSet()
myCommand.Fill(ds)
DG2.DataSource = ds
End Sub


[VB]

nefrat
دوشنبه 15 فروردین 1390, 22:50 عصر
نمیدونم توی دکمه حذف چی بنویسم!

amirsadeghi
سه شنبه 16 فروردین 1390, 01:36 صبح
الان مشکلت توی دکمه delete یا توی نشون دادن فیلد توی تکست ها؟

nefrat
سه شنبه 16 فروردین 1390, 14:51 عصر
خوب ببین توی فیلد ها نشون نمیده ... یعنی یه جورایی باید بگم وقتی من شماره شناسنامه دادم فیلد ها شو نشون بده و اگه حذف و زدم اون سطر و از جدول حذف کنه...
و تمام چیزی که بلد بودم این بوده...

nefrat
سه شنبه 16 فروردین 1390, 14:58 عصر
خط 4 برنامه از DG2.DataKeys ایراد میگیره میگه is not member of windows.system.forms.datagrid view
و توی خط اول از DataGridCommandEventArgs میگه این نیست منم کردمشDataGridViewRowEventArgs

nefrat
سه شنبه 16 فروردین 1390, 14:59 عصر
اگه بخوام شماره شناسنامه دادم فیلد و نشون بده توی تکست ها چجوری باید بگم؟