|
Dear all,
I found a very weird problem here with my Point-Of-Sales System. I'm using VB.NET 2003 connect MySQL 4.0 database for this system. I really can't figured out what happy to the following situation.
I'm trying to update my database for my system but it failed. I have checked the same SQL query using SQLyog and it works. But when I put into my code,it doesn't perform the UPDATE query as I need.
This is the code I used to test using SQLYog:
UPDATE pos_runningno SET Prefix='01',LastNo='80',Length='8' WHERE LocationCode='KK' AND TerminalCode='CTR01' AND Source='RECEIPTNO';
This is the code I put into my VB.NET code:
Try
ObjComm = New OdbcCommand("UPDATE pos_runningno SET Prefix='01',LastNo=' " & strReceiptNo & " ',Length='8' WHERE LocationCode =' " & TerminalLocate & " ' AND TerminalCode='" & TerminalID & "' AND Source='" & strSource & " '", ObjConn)
ObjConn.Open()
ObjComm.ExecuteNonQuery()
ObjConn.Close()
And I have checked it by changing the data 1 by 1 to the variable inside my system and I found that TerminalLocate is the problem. I have set TerminalLocate is s string and the string value is KK. But it doesn't not update at all and doesn't provide any error message from the system.
This is the structure of my database table for this row which I need to use to update:
Field Type Collation Null Key Default Extra Privileges Comment
------------ ----------- ----------------- ------ ------ ------- ------ ------------------------------- -------
LocationCode varchar(10) latin1_swedish_ci NO PRI select,insert,update,references
TerminalCode varchar(10) latin1_swedish_ci NO PRI select,insert,update,references
Source varchar(20) latin1_swedish_ci NO PRI select,insert,update,references
Prefix varchar(5) latin1_swedish_ci YES (NULL) select,insert,update,references
LastNo int(11) (NULL) YES 0 select,insert,update,references
Length int(11) (NULL) YES 0 select,insert,update,references
Anyone can tell me why this weird things could happen? And how to solve this matter?
Thanks for reading and hope to get someone help to solve it.
Regards
Drex
|
|
|
|
|
When any sql update statement does not affect any rows at all, and no error is thrown then it is almost always due to the WHERE clause. With the conditions that are set specifically in the code, no rows will be updated.
It is likely that not all of your variables actually return exactly the values that you tested with.
I suggest you put a textbox somewhere (if possible) and write the entire UPDATE statement to it. Someting like:
dim SqlUpdateStatement as string = "UPDATE pos_runningno SET Prefix='01',LastNo=' " & strReceiptNo & " ',Length='8' WHERE LocationCode =' " & TerminalLocate & " ' AND TerminalCode='" & TerminalID & "' AND Source='" & strSource & " '"
ObjComm = New OdbcCommand(SqlUpdateStatement, ObjConn)
TextBox1.Text = SqlUpdateStatement
ObjConn.Open()
ObjComm.ExecuteNonQuery()
ObjConn.Close()
That way you can take a copy of the actual statement your code is trying to run and test that statement in SQLYog, or at least see exactly what parameters your code is feeding to the sql statement.
Hope it helps,
Johan
My advice is free, and you may get what you paid for.
|
|
|
|
|
Yeah,thanks for your idea Mr.Johan. I have solve this problem. Its just a weird problem actually. I solve it as simple as just remove the space within the ' " & TerminalLocate & " ' to >> '"& TerminalLocate &"' solve the problem. I think its a spacing problem,Right?
Thanks for your effort anyway,its a good way to check the error for me too.
Regards
Drex
|
|
|
|
|
Hi Drex,
drexler_kk wrote: ' " & TerminalLocate & " ' to >> '"& TerminalLocate &"'
Actually the problem was apparently as I described, but you did indeed solve it.
Your variable TerminalLocate was correct, but because of the spaces between the single quotes and the double quotes, your code executed the UPDATE statement with the parameter value:
" KK " instead of "KK" as you needed.
In other words, in your code the update statement became:
UPDATE WhatWasYourTablesNameAgain SET WhatWasThatFieldsNameAgain = 'blablabla' WHERE TerminalCode = ' KK '
instead of:
UPDATE WhatWasYourTablesNameAgain SET WhatWasThatFieldsNameAgain = 'blablabla' WHERE TerminalCode = 'KK'
So yes, it was because of the spaces...
My advice is free, and you may get what you paid for.
|
|
|
|
|
Hello friends, it is possible to give format to a TextBox of the following way " 22 Sep 08 ", the first character of the month has to be in capital letters, with the DateTimePicker if it is possible to give format (dd MMM yy), but not as{like} doing to place the first character of the month in capital letters. Thank you and greetings.
|
|
|
|
|
TextBox1.Text = Format(dt, "dd-MM-yyyy")
Found at:
http://www.programmersheaven.com/mb/VBNET/273453/273453/bounded-textbox/?S=B20000[^]
or
If you cast the date as a datetime datatype first, you can then use its methods to format your date. Something like:
' replace string value with your dataset value
dim MyDate as DateTime = "12/06/1966 00:00"
txtMyDate.Text = MyDate.ToString("mm/dd/yyyy")
You can also still use the old VB Format() function.
Found at:
http://forums.devarticles.com/net-development-43/date-formating-a-textbox-in-vb-net-14089.html[^]
If you need any more information. Let me know.
modified 18-Dec-21 21:01pm.
|
|
|
|
|
the second code works well: but since I do to place the first character of the month in capital letters?
|
|
|
|
|
If you use the same routine but change the format, Everything appears fine on my end.
' replace string value with your dataset value
Dim MyDate As DateTime = "9/25/2008 00:00 "
MsgBox(MyDate.ToString("dd/MMM/yyyy"))
Displays as 25/Sep/2008
modified 18-Dec-21 21:01pm.
|
|
|
|
|
I am unable to interact with a any controls inside web browser DocumentComplete sub and I get an error.
Error that I receive in the Immediate Window:
A first chance exception of type 'System.InvalidOperationException' occurred in System.Windows.Forms.dll
Visual Basic 2008 Project Specifications:
.NET Framework 2.0
.COM References Added
Microsoft Internet Controls(ieframe.dll which reports as SHDocVw.dll)
Microsoft HTML Object Library(mshtml.tlb)
Project Consists Of:
1 Form
1 Button
1 Textbox with Multiline set to TRUE
Code Used:
Public Class Form1
Public WithEvents IE As New SHDocVw.InternetExplorer
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
IE.Navigate("http://www.msn.net", Nothing, Nothing, Nothing, Nothing)
IE.Visible = True
End Sub
Private Sub IE_DocumentComplete(ByVal pDisp As Object, ByRef URL As Object) Handles IE.DocumentComplete
TextBox1.Text = "Hello"
End Sub
End Class
Thanks in advance for any help that you can post.
-- modified 18-Dec-21 21:01pm.
|
|
|
|
|
Not sure whether this will solve your problem, but try using the WebBrowser control within the .NET Framework.
Change the line :
Public WithEvents IE As New SHDocVw.InternetExplorer
To :
Public WithEvents IE As New System.Windows.Forms.WebBrowser
Steve Jowett
-------------------------
Real programmers don't comment their code. If it was hard to write, it should be hard to read.
|
|
|
|
|
Sorry. I thought that worked great but it still has a problem.
I am launching Internet Explorer so that I can parse the DOM on DocumentComplete.
Internet Explorer is never visable after changing the WithEvents that you suggested but it does allow me to access form controls on DocumentComplete.
Any suggestions?
Thanks for the help.
modified 18-Dec-21 21:01pm.
|
|
|
|
|
I have noticed two things that might be relevant to solving your problem.
The actual error is a cross thread error when you try it with a textbox, and when you try it with a simple MsgBox("Hello!"), you'll find it will fire the DocumentComplete event three or four times.
So you could try to create any controls on the fly instead of using existing ones, or you could try to load all relevant information into a class first and then access that class afterward with the controls on your form.
However, if it really fires the event multiple times, you may have to think of a way first to determine which is the final / relevant instance of the event.
My advice is free, and you may get what you paid for.
|
|
|
|
|
The documentcomplete routine does fire multiple times on some web pages due to the number of frames the page contains. This is easily overcam by using the following code in the documentcomplete routine:
If IE.ReadyState = SHDocVw.tagREADYSTATE.READYSTATE_COMPLETE Then
TextBox1.Text = "Hello"
End If
Everything works perfectly if I do everything in the Button1.Click routine like this:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
IE.Visible = True
IE.Navigate(SiteUrl)
Do Until IE.ReadyState = SHDocVw.tagREADYSTATE.READYSTATE_COMPLETE
Loop
TextBox1.Text = "Hello"
'Parse web page DOM routine Here
End Sub
But as soon as I take everything after the Do Until Loop and put it in the DocumentComplete routine. I loose control over the DOM and all form controls.
I hope that this helps explain my situation better then I have in previous posts.
I really do appreaciate everyone's assistance on this problem. It is driving me crazy.
Pertains to using Public WithEvents IE As New SHDocVw.InternetExplorer as in my first post.
Keep those ideas coming.
modified on Thursday, September 25, 2008 4:21 PM
modified 18-Dec-21 21:01pm.
|
|
|
|
|
Many thanks goes to Johan Hakkesteegt for his great assistance.
With his suggestion, I scoured the wonderful world of Google and fixed the textbox1 problem in the DocumentComplete routine.
Here it is for anyone else that might have the same problem.
Public Class Form1
Public WithEvents IE As New SHDocVw.InternetExplorer
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
IE = New SHDocVw.InternetExplorer
IE.Visible = True
IE.Navigate("http://www.yahoo.com")
End Sub
Private Sub IE_DocumentComplete(ByVal pDisp As Object, ByRef URL As Object) Handles IE.DocumentComplete
If IE.ReadyState = SHDocVw.tagREADYSTATE.READYSTATE_COMPLETE Then
Try
Me.TextBox1.Invoke(New MethodInvoker(AddressOf Textbox1Change))
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End If
End Sub
Private Sub IE_OnQuit() Handles IE.OnQuit
IE = Nothing
End Sub
Private Sub Textbox1Change()
TextBox1.Text = "Hello"
End Sub
End Class
This works great(even if it does add to code length) for working with form controls inside an external browser's DocumentComplete routine.
Note: The above routine also takes into account the DocumentComplete routine firing more then once (once for each frame).
Awesome.
modified on Thursday, September 25, 2008 9:25 PM
modified 18-Dec-21 21:01pm.
|
|
|
|
|
If the focus is on textbox1 then I want the font color label1 to be red or else it is black.
I have used this
if textbox1.focus = true then
label1.forecolor=color.red but it does not work. Is this even possible in vb.net?
|
|
|
|
|
OK, so how is this code getting executed? What method is it sitting in?
|
|
|
|
|
You could always just use the Enter and Leave event procedures to change the font color of the label. The code in the Enter event procedure could change the color to red, and the code in the Leave event procedure could change back to black.
"The clue train passed his station without stopping." - John Simmons / outlaw programmer
"Real programmers just throw a bunch of 1s and 0s at the computer to see what sticks" - Pete O'Hanlon
"Not only do you continue to babble nonsense, you can't even correctly remember the nonsense you babbled just minutes ago." - Rob Graham
|
|
|
|
|
Assuming that what this function on several text boxes, then I would create a composite control consisting a text box and label. Then on the Enter event of the control change the fore color of the label and again on the Leave event.
Now you have the start of a control that can be used over and over again.
Steve Jowett
-------------------------
Real programmers don't comment their code. If it was hard to write, it should be hard to read.
|
|
|
|
|
That's a better idea than mine. I didn't really stop to think about using a custom control in the event the OP needed to do this for more than one textbox/label.
"The clue train passed his station without stopping." - John Simmons / outlaw programmer
"Real programmers just throw a bunch of 1s and 0s at the computer to see what sticks" - Pete O'Hanlon
"Not only do you continue to babble nonsense, you can't even correctly remember the nonsense you babbled just minutes ago." - Rob Graham
|
|
|
|
|
I have my moments
Steve Jowett
-------------------------
Real programmers don't comment their code. If it was hard to write, it should be hard to read.
|
|
|
|
|
i have got it figured out. the label will not change color text is entered into the textbox. i just pasted the code behide each textbox.
label1.forecolor=color.red
then the rest of the labels were initialized to black and as the next textbox starts to get information entered into it the last label changes to black and the current one changes to red. but i thank you gentleman for the input and i will try and attempt to use some of your suggestions.
Thank you all.
|
|
|
|
|
I'm trying to put an application together with NDK C3PO that would capture the contents of a message in Groupwise e.g. (Subject, Message Body) etc. and then write that data to a database like Access. Does anyone know where I would even start with this?
|
|
|
|
|
Tech support at the publisher/author of the NDK C3PO
Steve Jowett
-------------------------
Real programmers don't comment their code. If it was hard to write, it should be hard to read.
|
|
|
|
|
I don't understand your response. Are you talking about their documentation? If that's the case, it is very vague and does not go into detail on how to reference the areas that I mentioned with sections of an e-mail message.
|
|
|
|
|
You'll have to consult with Novell's docs for how to capture the contents. Once you have the email parts, it's fairly easy to put it into a database, and there are a lot of articles on CodeProject that demonstrate doing so. (Even more on Google.) Once you get started, if you have specific questions post them - you'll get more helpful replies to specific questions.
|
|
|
|