16,554
社区成员
发帖
与我相关
我的任务
分享
Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim cnStr As String = " Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=xxxx;Data Source=xxxx"
cn = New SqlConnection(cnStr) '连接数据库
cn.Open()
Dim id, nowdata As String
nowdata = Format(DateTime.Now, "yyMMdd") '获取今天日期
'第一步,模糊查询现有最大编号
Dim str As String = "Select max(PatID) from current_Patient where PatID like'%" & nowdata & "%'"
da = New SqlDataAdapter(str, cn)
ds.Clear()
da.Fill(ds, "ss号")
DataGridView1.DataSource = ds.Tables("ss号") '测试查询编号
If ds.Tables("ss号").Rows.Count = 0 Then '判断就诊号是否为当天新号
id = Format(DateTime.Now, "yyMMdd").ToString * 1000 '第二步,没有返回值,建立新编号
TextBox2.Text = id + 1
Else
TextBox2.Text = ds.Tables("ss号").Rows(0).Item(0).ToString + 1 '有返回值,最大值编号+1
End If
cn.Close()
End Sub
''' <summary>
''' 获取主表中的新单号
''' </summary>
''' <param name="MtableName">表名</param>
''' <param name="CodeFieldName">单号的字段名</param>
''' <param name="HeadText">单号的开头字母</param>
''' <param name="TmpDate">单号的日期码</param>
''' <returns>H180511-5</returns>
Public Shared Function GetCode(ByVal MtableName As String, ByVal CodeFieldName As String, Optional ByVal HeadText As String = "R", Optional ByVal TmpDate As String = "") As String
If IsDate(TmpDate) Then
TmpDate = HeadText & Convert.ToDateTime(TmpDate).ToString("yyMMdd") & "-"
Else
TmpDate = HeadText & Now.ToString("yyMMdd") & "-"
End If
Dim MaxID As Int32 = 0
For Each row As DataRow In DAL.GetTable("SELECT " & CodeFieldName & " FROM " & MtableName & " WHERE " & CodeFieldName & " LIKE '" & TmpDate & "%'").Rows
Dim i As Int32 = 0
If Int32.TryParse(row(CodeFieldName).ToString.Substring(TmpDate.Length, row(CodeFieldName).ToString.Length - TmpDate.Length), i) Then If i > MaxID Then MaxID = i
Next
Return TmpDate & (MaxID + 1).ToString
End Function