以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助] 错误码  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=161315)

--  作者:sanny
--  发布时间:2021/3/12 21:32:00
--  [求助] 错误码
老师,以下黄色标注的请帮忙更正一下,另外整个代码可以优化吗 ? 感谢。


Dim txt  As  String = e.Form.Controls("TextBox1").Text
txt = Tables("生产任务单").Current("生产任务单号")
e.Form.Controls("TextBox1").Text = txt


Dim val As Integer
Dim cmd As New SQLCommand
cmd.C
cmd.CommandText = "Se lect top 1 ImageBinary From {SDBC_Sa} Where BarcodeData =\'" & e.Form.Controls("TextBox1").Text & "\'and DATALENGTH(ImageBinary) > 0 and resend = 1,Date2 desc"
Dim dt As DataTable = cmd.ExecuteReader
If dt.datarows.count > 0 Then
Dim imagebytes As Byte() = dt.DataRows(0)("ImageBinary")
Dim stream As System.IO.Stream = New System.IO.MemoryStream(imagebytes)
Dim bmp As System.Drawing.Bitmap = New System.Drawing.Bitmap(stream)
Dim pbx As WinForm.PictureBox = Forms("pic").Controls("PictureBox1")
pbx.Image = bmp

Else

cmd.CommandText = "Sel ect top 1 ImageBinary From {SDBC_Sa} Where BarcodeData =\'" & e.Form.Controls("TextBox1").Text & "\'and DATALENGTH(ImageBinary) > 0"
\'Dim dt As DataTable = cmd.ExecuteReader
If dt.datarows.count > 0 Then
Dim imagebytes As Byte() = dt.DataRows(0)("ImageBinary")
Dim stream As System.IO.Stream = New System.IO.MemoryStream(imagebytes)
Dim bmp As System.Drawing.Bitmap = New System.Drawing.Bitmap(stream)
Dim pbx As WinForm.PictureBox = Forms("pic").Controls("PictureBox1")
pbx.Image = bmp

End If

End If

--  作者:有点蓝
--  发布时间:2021/3/13 9:42:00
--  
Dim val As Integer
Dim cmd As New SQLCommand
cmd.C
cmd.CommandText = "Se lect top 1 ImageBinary From {SDBC_Sa} Where BarcodeData =\'" & e.Form.Controls("TextBox1").Text & "\'and DATALENGTH(ImageBinary) > 0 order by resend,Date2 desc"
Dim dt As DataTable = cmd.ExecuteReader
If dt.datarows.count > 0 Then
Dim imagebytes As Byte() = dt.DataRows(0)("ImageBinary")
Dim stream As System.IO.Stream = New System.IO.MemoryStream(imagebytes)
Dim bmp As System.Drawing.Bitmap = New System.Drawing.Bitmap(stream)
Dim pbx As WinForm.PictureBox = Forms("pic").Controls("PictureBox1")
pbx.Image = bmp

End If

--  作者:sanny
--  发布时间:2021/3/13 11:43:00
--  
老师,

order by resend 加这个有点不对,我只有有钩的,resend = 1, 然后再将Date2 降序操作

--  作者:有点蓝
--  发布时间:2021/3/13 12:13:00
--  
这个是结合了1楼2条sql的结果,自己细品一下。测试有什么问题?
--  作者:sanny
--  发布时间:2021/3/13 12:31:00
--  
老师,是有点不对,

条件一 : 取 resend = 1 并且  Date2 的最晚的一条记录

条件二 :如果 没有 resend = 1 的记录, 就取Date2 最早的一条记录

--  作者:有点蓝
--  发布时间:2021/3/13 14:37:00
--  
那还是分2次把,1楼代码不变

cmd.CommandText = "Se lect top 1 ImageBinary From {SDBC_Sa} Where BarcodeData =\'" & e.Form.Controls("TextBox1").Text & "\'and DATALENGTH(ImageBinary) > 0 and resend = 1,Date2 desc"
改为
cmd.CommandText = "Se lect top 1 ImageBinary From {SDBC_Sa} Where BarcodeData =\'" & e.Form.Controls("TextBox1").Text & "\'and DATALENGTH(ImageBinary) > 0 and resend = 1 order by Date2 desc"

--  作者:sanny
--  发布时间:2021/3/13 17:56:00
--  
谢谢老师

以下这个黄色不对,可以也帮忙修改一下,谢谢。

Dim fdr As DataRow = dt.Find("BarcodeData=\'" & rr("生产任务单号") & "\' and Resend = 1,Date desc")


--  作者:有点蓝
--  发布时间:2021/3/14 20:09:00
--  
参考:http://www.foxtable.com/webhelp/topics/0396.htm