|
I'm trying to call 2 different Stored Procedures from 1 function that I have in a separate class page. Everything is the same Connection, SearchBy, SearchVal, etc.. except the Stored Procedures are different. Is it possible to place 2 different Stored Procedure in the code like this?
Public Shared Function SearchEmpRecords_Sp(searchBy As String, searchVal As String) As DataTable
Dim con As New SqlConnection(ConfigurationManager.ConnectionStrings("strName").ConnectionString)
Dim adp As New SqlDataAdapter()
Dim cmd As New SqlCommand()
Dim cmd2 As New SqlCommand()
Dim dt As New DataTable()
Try
cmd.CommandType = CommandType.StoredProcedure
** My 2 Different Stored Procedures **
cmd.CommandText = "SearchEmpRecords_Sp"
cmd.CommandText = "SearchEmpRecords_Sp2"
cmd.Parameters.AddWithValue("@SearchBy", searchBy)
cmd.Parameters.AddWithValue("@SearchVal", searchVal)
cmd.Connection = con
adp.SelectCommand = cmd
' con.Open()
adp.Fill(dt)
Return dt
Catch ex As Exception
MsgBox(ex.Message)
Finally
adp.Dispose()
con.Close()
End Try
End Function
|
|
|
|
|
cmd.CommandText = "SearchEmpRecords_Sp"
cmd.CommandText = "SearchEmpRecords_Sp2"
What do you think will be the contents of cmd.CommandText after these two statements? You need to run your adp.SelectCommand twice, first with one command and its parameters, and second with the others.
Veni, vidi, abiit domum
|
|
|
|
|
Assuming he would concatenate the strings, would it work? I'd say that it probably would work, since one can put multiple SQL-statements in a command.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
Yes of course, but not something many modern devopers use.
Veni, vidi, abiit domum
|
|
|
|
|
Commish13 wrote: Is it possible to place 2 different Stored Procedure in the code like this? Dunno; I assume you tried the code you posted. If it didn't work; what error did it throw?
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
It didn't throw an error. My custom error displayed saying "* No Records Found"
|
|
|
|
|
Should there be? Btw;
cmd.CommandText = "SearchEmpRecords_Sp;"
cmd.CommandText += "SearchEmpRecords_Sp2;" That's three modifications.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
how to display the size of the camera sensor in vb.net, I use component for displaying camera avicap32.d
|
|
|
|
|
fitriadinurdin wrote: how to display the size of the camera sensor in vb.net Under WinForms, one would use a label to display information. Retrieving the size would be somewhat more difficult than displaying it.
I'm afraid I don't understand the question, can you rephrase it a bit or elaborate?
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
I'm having this problem, in my Windows Form App. (WFA) when the user ask an action clicking on a button, if the related field is empty an arrow should guide the user to add some value.
The problem is the following, I programmatically add this arrow img (.png) into a picturebox indicating the user where to add the missing data but the image overlaps the other controls covering lines and borders. I would like to add this image (may be still using picturebox or other) with transparent background in the way that only the arrow is shown and the remaining rectangle is transparent. I've tried with opacity property but I really don't know if it was right well coded.
I'm using just a sub to create a picturebox and place in it the arrow (or whatever) image. here the code:
Public Sub proPaintArrow()
Dim mypic As PictureBox = New PictureBox
Dim HasAlpha As Boolean
mypic.Image = Image.FromFile("C:\APP\backward.png")
mypic.BackgroundImage = Nothing
mypic.Height = 30
mypic.Width = 30
mypic.Left = txtDSFID.Location.X + 200
mypic.Top = txtDSFID.Location.Y + 10
mypic.Visible = True
mypic.BorderStyle = BorderStyle.None
mypic.SizeMode = PictureBoxSizeMode.StretchImage
mypic.BackColor = Color.FromArgb(0, 0, 0, 0)
Using I = System.Drawing.Image.FromFile("C:\APP\backward.png")
HasAlpha = (I.Flags And System.Drawing.Imaging.ImageFlags.HasAlpha) = System.Drawing.Imaging.ImageFlags.HasAlpha
End Using
mypic.Parent = Me
mypic.BringToFront()
mypic.Show()
End Sub
The call is made here:
If viTypeUpdate = 0 Then
MsgBox("Scelta non completamente effetauta" + vbNewLine + "Scegliere se 'Lock' o 'Write'", MsgBoxStyle.Exclamation, "Update TAG")
proPaintArrow()
Exit Sub
End If
The function to manage opacity is the following, but it didn't work at all.
Public Function SetImgOpacity(ByVal imgPic As Image, ByVal imgOpac As Single) As Image
Dim bmpPic As New Bitmap(imgPic.Width, imgPic.Height)
Dim gfxPic As Graphics = Graphics.FromImage(bmpPic)
Dim cmxPic As New ColorMatrix()
Dim iaPic As New ImageAttributes()
cmxPic.Matrix33 = imgOpac
iaPic.SetColorMatrix(cmxPic, ColorMatrixFlag.[Default], ColorAdjustType.Bitmap)
gfxPic.DrawImage(imgPic, New Rectangle(100, 300, bmpPic.Width, bmpPic.Height), 0, 0, imgPic.Width, imgPic.Height, GraphicsUnit.Pixel, iaPic)
gfxPic.Dispose()
iaPic.Dispose()
Return bmpPic
End Function
Thank you
|
|
|
|
|
jose mandurrino wrote: in my WFA app.
Which one of these do you mean[^]?
Veni, vidi, abiit domum
|
|
|
|
|
Oops!!!, it is right, updated. Thanks!!
|
|
|
|
|
WinForms wasn't built with transparancy in mind and it is not very well supported.
Easiest solution is to draw the image yourself, in the Paint-event.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
OK! Could you post some code example to give me an idea in how to proceed? Thank you.
|
|
|
|
|
Delete the control. Change the Paint handler[^] of the container that contained the control to DrawImage[^] the bitmap onto it's canvas.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
How about a different approach using an ErrorProvider[^]?
Public Class Form1
Private err As New ErrorProvider
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
err.Icon = My.Resources.warning ' you can change the icon to display if desired
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If String.IsNullOrEmpty(TextBox1.Text) Then
TextBox1.Focus()
SetError(TextBox1, "please enter something")
Else
'do something
End If
End Sub
Private Sub SetError(ByVal cntrl As Control, ByVal msg As String)
err.SetError(cntrl, msg) ' displays err icon
AddHandler cntrl.Validated, AddressOf ClearErr ' provide a handler to clear the error after leaving the control
End Sub
Private Sub ClearErr(ByVal sender As Object, ByVal e As System.EventArgs)
Dim cntrl As Control = DirectCast(sender, Control)
RemoveHandler cntrl.Validated, AddressOf ClearErr
err.SetError(cntrl, String.Empty) ' setting the message to String.Empty clears the error
End Sub
End Class
|
|
|
|
|
TnTinMn, thank you a lot, that is perfect and for sure I will use it since now on. I'm going to change my code to using this suggestion. For what concern my question, now it is solved.
I discover also that with this suggestion or with just a picturebox, if it is inside a groupbox, the image/icon will not be show complete, it will be cut after the border. Interesting.
(However, it would be interesting to find an answer to what was the original question and make a tutorial to help beginners like me. I saw a lot of people asking the same thing in different forums.)
Thank you again
|
|
|
|
|
First off, you are welcome. Nice to see that a poster actually appreciates our efforts.
Quote: I discover also that with this suggestion or with just a picturebox, if it is inside a groupbox, the image/icon will not be show complete, it will be cut after the border. Sheesh, some people want everything.
Ok, I did a bit of playing around and found that if the target control is parented directly to the Form and not a sub container control, that the ErrorIcon will paint on top of everything. So with a little hacking, here is a custom ErrorProvider that will add a DummyControl directly to the form and post the error against that control instead.
Warning!, I have given this only minimal testing and did not include any fault detection/handling.
Maybe I will clean it up a bit when I have time and post it as Tip/Article.
Give it a go and see how it works for you. Just add this code to your project and use it place of ErrorProvider when you declare an instance.
Public Class FloatingErrorProvider
Inherits ErrorProvider
' Create a storage structure to hold the DummyControls that will
' be parented to the form that contains the control be error reported
' The ErrorProvider will display the ErrorIcon against these controls
' instead of against the source control if the source control is not
' directly parented to the form.
Private AnchorControls As New Dictionary(Of Control, DummyControl)
Private Function GetDummy(ByVal control As Control) As DummyControl
Dim dummy As DummyControl
If AnchorControls.ContainsKey(control) Then
dummy = AnchorControls(control)
Else
dummy = New DummyControl ' a zero sized, non-painting control
dummy.Parent = control.FindForm ' parent to the host form
dummy.SendToBack() ' send to bottom of Z-order
AnchorControls.Add(control, dummy) ' store a reference to it
End If
Return dummy
End Function
''' <summary>
''' sets the dummy control location
''' </summary>
Private Sub SetDummyPosition(ByVal dummy As DummyControl, ByVal control As Control)
Dim errloc As Point
Dim left As Int32 = control.Location.X
Dim right As Int32 = left + control.Width
Dim top As Int32 = control.Location.Y
Dim bottom As Int32 = top + control.Height
Dim mid As Int32 = top + (control.Height \ 2)
Dim align As ErrorIconAlignment = GetIconAlignment(control)
Select Case align
Case ErrorIconAlignment.BottomLeft
errloc = New Point(left, bottom)
Case ErrorIconAlignment.BottomRight
errloc = New Point(right, bottom)
Case ErrorIconAlignment.MiddleLeft
errloc = New Point(left, mid)
Case ErrorIconAlignment.MiddleRight
errloc = New Point(right, mid)
Case ErrorIconAlignment.TopLeft
errloc = New Point(left, top)
Case ErrorIconAlignment.TopRight
errloc = New Point(right, top)
End Select
dummy.Location = control.FindForm.PointToClient(control.Parent.PointToScreen(errloc))
End Sub
Public Shadows Sub SetError(ByVal control As Control, ByVal text As String)
Dim errcontrol As Control
If NeedsDummy(control) Then
errcontrol = GetDummy(control)
SetDummyPosition(DirectCast(errcontrol, DummyControl), control)
Else
errcontrol = control
End If
MyBase.SetError(errcontrol, text)
End Sub
''' <summary>
''' determine if control is parented directly to the form
''' </summary>
Private Function NeedsDummy(ByVal control As Control) As Boolean
Dim frm As Form = control.FindForm
Return frm.Handle <> control.Parent.Handle
End Function
#Region "Method Overrides"
Public Shadows Sub SetIconAlignment(ByVal control As Control, ByVal alignment As ErrorIconAlignment)
If NeedsDummy(control) Then
Dim errcontrol As DummyControl = GetDummy(control)
MyBase.SetIconAlignment(errcontrol, alignment)
SetDummyPosition(errcontrol, control)
Else
MyBase.SetIconAlignment(control, alignment)
End If
End Sub
Public Shadows Function GetError(ByVal Control As Control) As String
Dim errcontrol As Control
If NeedsDummy(Control) Then
errcontrol = GetDummy(Control)
Else
errcontrol = Control
End If
Return MyBase.GetError(errcontrol)
End Function
Public Shadows Function GetIconAlignment(ByVal control As Control) As ErrorIconAlignment
Dim errcontrol As Control
If NeedsDummy(control) Then
errcontrol = GetDummy(control)
Else
errcontrol = control
End If
Return MyBase.GetIconAlignment(errcontrol)
End Function
Public Shadows Function GetIconPadding(ByVal control As Control) As Int32
Dim errcontrol As Control
If NeedsDummy(control) Then
errcontrol = GetDummy(control)
Else
errcontrol = control
End If
Return MyBase.GetIconPadding(errcontrol)
End Function
Public Shadows Sub SetIconPadding(ByVal control As Control, ByVal padding As Int32)
Dim errcontrol As Control
If NeedsDummy(control) Then
errcontrol = GetDummy(control)
Else
errcontrol = control
End If
MyBase.SetIconPadding(errcontrol, padding)
End Sub
#End Region
''' <summary>
''' A non-painting, zero sized control to post an Error against
''' </summary>
Private Class DummyControl
Inherits Control
Public Sub New()
Size = Size.Empty
Visible = True
End Sub
Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
'don't paint anything
End Sub
End Class
End Class
|
|
|
|
|
Absolutely, your suggestions help a lot of people like me and we really appreciate too much this kind of effort. Some times, yours helps save us weeks of "try around" the problem.
About the ErrorProvider, great! thank you again. I'll try this new way and give you news about.
Let me know if/when you will be issuing an article, I'll be happy to read it.
|
|
|
|
|
how to zoom a big image with VB?The image size is approximately 6000*8000 pixel.I want it to be completed within 100 milliseconds.Is this possible?
|
|
|
|
|
991176515 wrote: <layer>how to zoom a big image with VB? Same way as smaller images. There's quite some examples on Google on how to draw an image, and here on CodeProject[^].
991176515 wrote: I want it to be completed within 100 milliseconds No. Depending on the machine used, loading the image into memory might even take longer than 100 milliseconds.
Where did the number 100 come from? Is it really a requirement, or do you simply want a "fast zoom"?
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
It is kind of a requirement.I need to zoom a big image smoothly.It can be achieved only when scaling time in about 70 milliseconds or less. I might ask the question inappropriately.I do not need the whole picture be zoomed,only the part which is visible.But i have had a try with the GDI+,it taked about 1500-3000 milliseconds to zoom the whole picture and 200-300 millseconds to the visible part(it's size is about 1300 * 960).There is another problem. If every time in pan conducting a zooming operation so pan operation will become dull.My current solution is keeping the zoomed image in memory and drawing it to the screen when a pan is requested.But it takes a lot of memory.
If there is a syntax error, please forgive me, because I am using Google Translate.I am chinese and English makes me a headache.
Thank you for your answer.
谢谢!来自中国的感谢。哈哈! 
|
|
|
|
|
991176515 wrote: I need to zoom a big image smoothly.It can be achieved only when scaling time in about 70 milliseconds or less. One cannot guarantee execution-time under Windows, due to the way multitasking is implemented. Giving the impression of a smooth transition is a lot easier. In a game, one might abuse the graphics card to blur one image into another.
991176515 wrote: But i have had a try with the GDI+,it taked about 1500-3000 milliseconds to zoom the whole picture and 200-300 millseconds to the visible part(it's size is about 1300 * 960). Imagine you use a second copy of that picture, but scaled to 120 * 96. It'd zoom real fast, but it'd be looking "blocky" due to the resolution. Show that while zooming on the high-res version of your picture on a background-thread. Replace when ready, or abort if the user zooms out or pans.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
A different concept could bring the solution. Do you know Google Earth? They send "tiles", each tile consists of 256*256 pixels. And those tiles are then drawn on the screen, each at its place.
So you could split the big image into several tiles, and do the zoom and draw operations only on the tiles required currently.
|
|
|
|
|
Hi all I keep getting the system null reference exception
I know where it is I just wonder why there is a null.
Public Class Countries
Const ARRAY_UPPERBOUND As Integer = 8
Public Structure WorldCountries
Dim countriesNames As String
Dim countriesAbbreviations As Integer
End Structure
Dim enterCountry(ARRAY_UPPERBOUND) As WorldCountries
Private Sub ExitToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExitToolStripMenuItem.Click
Me.Close()
End Sub
Private Sub Countries_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim enterCountry(ARRAY_UPPERBOUND) As WorldCountries
enterCountry(0).countriesNames = "Antarctica"
enterCountry(0).countriesAbbreviations = "AQ"
enterCountry(1).countriesNames = "Bahamas"
enterCountry(1).countriesAbbreviations = "BS"
enterCountry(2).countriesNames = "Canada"
enterCountry(2).countriesAbbreviations = "CA"
enterCountry(3).countriesNames = "Estonia"
enterCountry(3).countriesAbbreviations = "EE"
enterCountry(4).countriesNames = "France"
enterCountry(4).countriesAbbreviations = "FR"
enterCountry(5).countriesNames = "Ireland"
enterCountry(5).countriesAbbreviations = "IE"
enterCountry(6).countriesNames = "Japan"
enterCountry(6).countriesAbbreviations = "JP"
enterCountry(7).countriesNames = "Mexico"
enterCountry(7).countriesAbbreviations = "MX"
enterCountry(8).countriesNames = "Netherlands"
enterCountry(8).countriesAbbreviations = "NL"
End Sub
Private Sub CountryAbbreviationButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CountryAbbreviationButton.Click
Dim cNames As String
Dim bfound As Boolean = False
'get input
cNames = CountryTextBox.Text.ToLower
'Compare input
For l As Integer = 0 To ARRAY_UPPERBOUND
If cNames = enterCountry(l).countriesNames.ToLower Then
bfound = True
AbbreviationTextBox.Text = enterCountry(l).countriesAbbreviations
Exit For
End If
Next
'If Found
If Not bfound Then
MessageBox.Show("Name not Found")
End If
End Sub
End Class
|
|
|
|
|