|
The only reason I've continued building SQL strings instead of using parameters is because I have often found it helpful, when having a problem, to put a breakpoint after the SQL is built but before it's executed. Then I'll cut the fully built SQL string and plop it in my database window so the database can give me a clearer understanding of what is going wrong. I presume there's a way to do this with parameters... to see what the whole SQL statement is and attempt execution in the database... but I've never had time to dig up how to do it. So now with this thread, I just thought I'd ask how that can be done. Thanks.
Hypermommy
|
|
|
|
|
Yep, SQL Server Profiler can intercept all calls to a SQL database. It can either show them on screen in a table or it can store them into a file or database table (which you can then query against). There is all kinds of filtering available to only intercept the calls you are interested in. It's one of the tools that gets installed with SQL Server Management Studio.
Somebody in an online forum wrote: INTJs never really joke. They make a point. The joke is just a gift wrapper.
|
|
|
|
|
Aiiieeee! I've seen that, now that you mention it. Guess I need to make myself a note to use it more often. Now if you'll excuse me I'm off to investigate it some more. Thanks!
Hypermommy
|
|
|
|
|
Really dumb question time here.... we're using SQL Server Management Studio Express here. My guess is the reason I'm not seeing Profiler is because this is Express and as such is not as complete as the full SSMS? Would you figure that's what it is or maybe I'm just not seeing it?
Hypermommy
|
|
|
|
|
I think you are correct. I did a search and came across this. It is apparently a tool that acts like SQL Server Profiler, but that works with SQL Server Management Studio Express.
Somebody in an online forum wrote: INTJs never really joke. They make a point. The joke is just a gift wrapper.
|
|
|
|
|
Looks like what I need. Thanks!!!
Hypermommy
|
|
|
|
|
Also, the reason you should not use string concatenation is because of SQL injection attacks (not to mention it causes errors like the one you've come across). Just a few minutes ago somebody posted in the Lounge about a SQL injection attack getting some people into trouble.
Somebody in an online forum wrote: INTJs never really joke. They make a point. The joke is just a gift wrapper.
|
|
|
|
|
Right, however not the best example, the way I understood that linked message, SQL injection attacks can be almost good.
|
|
|
|
|
Most SQL injection attacks can be good... for somebody.
Somebody in an online forum wrote: INTJs never really joke. They make a point. The joke is just a gift wrapper.
|
|
|
|
|
Hello fellow programmers,
I have reached a bump in the road that I am unable to get over. I would appreciate some assistance. Currently, I am upgrading an old app in VB6 to VS2008. The function in question is using the object data type for 2 parameters. After reading on this site the warning about boxing and unboxing of object data types and how they can increase time I was wondering if I could alleviate that by overloading the function or making it generic.
Initially I wanted to overload the function. However, with all the possible data types that can be accepted I found out that there are 26 possible combinations of all the parameters that needed to be overloaded. This does not seem to me an ideal way to go so I started looking into generics.
Here comes my problem. Before messing around with the original code I created a separate program to simulate what I need to do to change the code. I ran into some problems that I am unable to figure out what to do. I will post the code momentarily. If any of you fellow programmers don't think this is a valid way to go please let me know why. I am open to suggestions.
Note: This is placed inside a module.
Public Function ReportGeneric(Of Class_Objects, GUI_Input)(ByRef value1 As Class_Objects, ByRef value2 As GUI_Input) As Boolean
Dim status As Boolean
Try
If TypeOf value2 Is System.Windows.Forms.ComboBox Then
setComboBoxWithInfo(value1.ReturnsImportantInfo())
ElseIf TypeOf value2 Is System.Windows.Forms.TextBox Then
setTextBoxWIthInfo(value1.ReturnsImportantInfo())
End If
status = True
Catch ex As Exception
MsgBox("Good job you broke the software!")
status = false
End Try
Return status
End Function
There are many errors that I receive that pertain to the class_objects members. Should I put constraints on the class_objects? Am I going about this the wrong way? Any info you can send my way would be greatly appreciated. If you would like me to clarify anything let me know.
Thanks!
|
|
|
|
|
After further investigation I have tried to add a constraint to see if this will help my problem. I tried the following code below.
Public Function ReportGeneric(Of Class_Objects As {clsMyClass1, clsMyClass2}, GUI_Input)(ByRef value1 As Class_Objects, ByRef value2 As GUI_Input) As Boolean
...
Both classes will have the same member function as shown in my original post. But the compiler error I receive is "Type parameter 'Class_Objects' can only have one constraint that is a class." This does not bode with me to well. It seems as though generics well not help me to achieve reduce copying my function and overloading it. As I mentioned before I would really like to steer away from copying my function 26 times and overloading it to capture all possible combinations of different parameters. This will make it hard to maintain code down the line.
Is something amiss here? Have I overlooked something?
Thanks.
One more thing I would like to say is yes I can use an object data type and be done with this, but the point was to focus upon speed by preventing boxing and unboxing. Any info you can send my way to shed some light would be greatly appreciated.
|
|
|
|
|
Clark Kent123 wrote: "Type parameter 'Class_Objects' can only have one constraint that is a class."
That limit doesn't exist for Interfaces. Create an Interface or multiple Interfaces for your classes to implement, even if it's a one interface to one class ratio.
|
|
|
|
|
Thanks Dave for that piece of advice. That looks like my only option at this point.
Now I just have to figure out the logistics of what needs to be done. Thanks again.
|
|
|
|
|
Hi every one I am New using VB and also new in this Web site I created and VB Application the Read, add, and delete Printers records from an Access database. But the Application don't know when the Printer is Online or Offline I have to manually update that. I want that the be automatically and this is what I have so far but is not saving it...Please help me
Private Sub SplashForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
PFCdbconnection = New OleDbConnection("Provider=microsoft.jet.oledb.4.0; data source =F:\Device Files\MFC\Common\Shared\Printer Control\PFC.mdb;jet OLEDB:Database Password=password;")
PFCdbconnection.Open()
printerscommand(0) = New OleDbCommand("SELECT Printer,IPAddress,OffLine,Online FROM PrinterInfo ORDER by ID", PFCdbconnection)
printersAdapter(0) = New OleDbDataAdapter()
printersAdapter(0).SelectCommand = printerscommand(0)
PrintersTable(0) = New DataTable
printersAdapter(0).Fill(PrintersTable(0))
PrintersManager(0) = DirectCast(Me.BindingContext(PrintersTable(0)), CurrencyManager)
Dim MaxRow As Integer
MaxRow = PrintersTable(0).Rows.Count
Dim RPosition As Integer = 0
Do Until RPosition = MaxRow
PrintersTable(0).DefaultView.Sort = "Printer"
PrintersManager(0).Position = RPosition
PrinterIPTextBox.DataBindings.Add("Text", PrintersTable(0), "printer")
If My.Computer.Network.Ping(PrinterIPTextBox.Text) Then
OnlineRadioButton.Checked = True
Else
OfflineRadioButton.Checked = True
End If
PrintersManager(0).EndCurrentEdit()
Dim CurrentInfoData As DataRow = PrintersTable(0).Rows(PrintersTable(0).Rows.Count - 1)
If RPosition = -1 Then
CurrentInfoData.Item("Online") = OnlineRadioButton.Checked
CurrentInfoData.Item("offline") = OfflineRadioButton.Checked
Dim PrinterInfoCom As New OleDbCommandBuilder(printersAdapter(0))
printersAdapter(0).Update(PrintersTable(0))
End If
PrinterIPTextBox.DataBindings.Clear()
RPosition = RPosition + 1
Loop
End Sub
modified 20-Oct-11 11:04am.
|
|
|
|
|
I would move the printer status to a background worker that monitors for a changing status e.g. going offline/online etc. then message this to the rest of the application.
That way you could set it off running at the start and forget about it, and only concern yourself with a state change.
Also ping is not a reliable method of determining the printers availability. The network interface could still happily respond to ping events, but the main printer is in fact dead.
You would be better to read the printer status directly using WMI.
|
|
|
|
|
Thanks DaveAuld
But How can I read the printer status directly using WMI that is New to me.
|
|
|
|
|
|
Hello everyone!
I'm trying to write a small application that will show the GPU temperature.
I'v found the following documentation about the subject:
http://developer.download.nvidia.com...lPanel_API.pdf
according to this documentation, I can use the nvcpl.dll file (which is a part of the NVIDIA driver) like this:
Function
Prototype
BOOL CDECL NvCplGetThermalSettings
(IN UINT nWindowsMonitorNumber,
OUT DWORD* pdwCoreTemp,
OUT DWORD* pdwAmbientTemp,
OUT DWORD* pdwUpperLimit);
Parameters In UINT nWindowsMonitorNumber -- The display number shown on
the Windows Display Properties->Settings page.
A value of 0 indicates the current primary Windows display device.
DWORD* must be a valid pointer --
pdwCoreTemp -- GPU temperature in degrees Celsius.
pdwAmbientTemp -- Ambient temperature in degrees Celsius.
pdwUpperLimit -- Upper limit of the GPU temperature specification.
Return Values True on success.
False on failure.
Now i wrote this code in VB.NET:
<DllImport("nvcpl.dll", CallingConvention:=CallingConvention.Cdecl)>
Private Shared Function NvCplGetThermalSettings(ByVal nWindowsMonitorNumber As ULong, ByRef pdwCoreTemp As UInt32, ByRef pdwAmbientTemp As UInt32, ByRef pdwUpperLimit As UInt32) As Boolean
End Function
Public Function Temperature(ByVal monitornumber As Long) As UInt32
Dim core As UInt32
Dim ambient As UInt32
Dim upperlimit As UInt32
If NvCplGetThermalSettings(monitornumber, core, ambient, upperlimit) Then
Return core
Else
Return 0
End If
End Function
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
MessageBox.Show(Temperature(0))
End Sub
Now the problem is that this code keeps sending back 0, which means somethin is wrong here and the function is not working. It's been two days now and i still can't figure it out :S
I'd really appreciate any help.. thanks alot!
|
|
|
|
|
Instead of using Long for data types, use Integer. Long is a 64-bit integer whereas the C function header is specifying an unsigned int (unsigned 32-bit integer). In this case, it really doesn't matter if you use UInt32 or Integer.
|
|
|
|
|
you mean that nWindowsMonitorNumber argument? I'v already tried using Integer and UInteger but still it doesn't help, I keep getting 0... :S
|
|
|
|
|
Have you tried:
If Not NvCplGetThermalSettings(monitornumber, core, ambient, upperlimit) Then
Debug the code step-by-step and watch all the values to see what you're getting.
|
|
|
|
|
don't worry too much about signed/unsigned integers, the one thing that matters is their size, and you got that right.
My best guess is: you are calling the function all right, and it fails, i.e. it returns false, probably (some googling suggests so) because you are running on Vista or higher, and giving you a temperature value is considered a risky thing to do.
|
|
|
|
|
I think your right. But what should i do ? does this mean i cannot have the GPU temperature with VB.NET? :S (
|
|
|
|
|
Member 8078870 wrote: I think your right.
I don't know, you still haven't told what OS you have.
Member 8078870 wrote: what should i do ?
google. Maybe it is possible, I don't know.
Member 8078870 wrote: does this mean i cannot ... with VB.NET?
if you can't get it without VB.NET, you can't with VB.NET either.
if you can with C or C++, then through P/Invoke you can also get it in a managed language such as VB.NET
|
|
|
|
|
I have windows 7 64bit.
with C/C++ it can be done and i'v seen it working, but i want to achieve this with VB.NET, that's the goal. google didn't help believe me i'v read evey possible related thread to this subject, and still found no answer.
|
|
|
|