|
Is nobody there to solve me ?
|
|
|
|
|
If anyone knows the answer they will suggest it. In the meantime try running your code through the debugger to see what is happening.
Veni, vidi, abiit domum
|
|
|
|
|
I have an application using an ADODB connection to a DBase database (simple and easy to distribute). I captured the SQL string sent to the connection object using Quickwatch. I pasted the SQL statement into an SQL tool. I executed the SQL and it returned no rows which is correct. However when the same SQL string is passed to the ADODB connection it returns 189 rows.
Here is the code the initializes the ADODB connection:
strConn = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\DataStore;Extended Properties=DBASE III"
ConnDBF = New ADODB.Connection
ConnDBF.Open(strConn)
OK = ConnDBF.State
rstGRK = New ADODB.Recordset
rstGRK.CursorType = ADODB.CursorTypeEnum.adOpenStatic
Here is the SQL string being passed:
rstGRK.Open(SQLString, ConnDBF)
ResultCnt = rstGRK.RecordCount
Here is the SQL string:
<pre>SELECT BKL.BkShtName,
SRC.BookNo,
SRC.ChapNo,
SRC.VerseNo,
SRC.VerseText1,
SRC.VerseText2
FROM BIENBVS SRC,
BIBKLST BKL
WHERE SRC.BookNo = BKL.BookNumber
AND (SRC.VerseText1 LIKE '%frank jones%'
OR SRC.VerseText2 LIKE '%frank jones%' )
ORDER BY 2, 3, 4</pre>
The correct results is NO ROWS because the names begin with upper case. The ADODB connection returns 189 rows which is incorrect.
Does anybody have any ideas what could be going on and how to force the connection to be case sensitive?
|
|
|
|
|
The Jet database engine is inherently NOT case sensitive, so you have to force it to be.
I don't use Access (EVER!) but IIRC, you're looking for something like this:
SELECT ... FROM ... WHERE SRC.BookNo = BKL.BookNumber
AND (StrComp(SRC.VerseText1, "frank jones", 0) = 0
OR (StrComp(SRC.VerseText2, "frank jones", 0) = 0)
ORDER BY ...
|
|
|
|
|
The database is actually DBase (good reason to use, but it is a long explanation).
I converted the VB app to use OdbcConnection & OdbcDataReader methods and the ODBC DSN created with driver - "Microsoft dBase Driver (*.dbf)" . The results are the same - the query in VB still refuses to be case-sensitive.
If I put a breakpoint in the code and capture the SQL string and paste the string verbatim into WinSQL (an SQL tool using the same exact ODBC DSN), and execute the query, no results are returned.
The query behaves differently in VB that in an SQL tool using the exact same driver and ODBC definition.
Do not know why it works differently in VB than in WinSQL !!!!!
|
|
|
|
|
I have no idea since I don't have any access to any dBase databases. Thats one I have used since 1986.
I have no idea how to make it case sensitive for dBase.
|
|
|
|
|
I played around with this bit and was perplexed by your problem with case-insensitivity as I was not seeing it. That was until I noticed that you included an "Order By" clause. At least on my end, it is the "Order By" that makes it case-insensitive. Weird!
I only used a single table, so I don't know if that will effect anything, but it may worth a try to drop the "Order By" clause and see what happens.
If that resolves the issue, you could load a DataTable with your query results and apply a sort on the DefaultView to achieve the needed sort order.
Good Luck.
|
|
|
|
|
I tried removing the "ORDER BY" clause, but the results were the same.
However, after running the query from within VB, I ran the same exact query in WinSQL and it returned multiple rows. Then I ran it a second time and it returned 0 rows. Running it a 3rd and 4th time still returned 0 rows.
I returned to VB and ran the query again. Then I reran it in WinSQL and the first time the query returned many rows and the 2nd, 3rd, 4th, ..... runs returned 0 rows. This behavior is repeatable.
That tells me that the VB app is setting some unknown property that is causing the query to be case-insensitive.
I am going to turn SQL tracing on and see if I can find a difference in the SQL.LOG created from VB and the SQL.LOG created by a good run in WinSQL.
Don't you just love it when the application/objects help you by doing something you did not ask it/them to do !!!!!
|
|
|
|
|
Based on a suggestion from someone on another forum, and mega frustration, I decided to abandon the current ODBC DSN. I found and installed a Visual FoxPro driver and created a new DSN using that driver.
The query is now case-sensitive as it should be.
|
|
|
|
|
How To select audio track use vb.net using cronoapi.dll?
|
|
|
|
|
Never heard of it.
I have no idea where you got it from, so I don't know where you should ask about it either.
You ask the people who write the .DLL about how to use it.
|
|
|
|
|
ChronoTron[^] it seems.
Keep Clam And Proofread
--
√(-1) 23 ∑ π...
And it was delicious.
|
|
|
|
|
Yeah, I Goggled the sh*t out of the .DLL name and came up empty. Either way, the advice is still the same. ask the people who wrote it, not the people who are guessing at what you're using!
|
|
|
|
|
Dave Kreskowiak wrote: Goggled
That's your issue, you needed to Google it!
Keep Clam And Proofread
--
√(-1) 23 ∑ π...
And it was delicious.
|
|
|
|
|
Damn spellcheck built into IE!
|
|
|
|
|
can't you show me how to implement it to vb.net source?
|
|
|
|
|
Hi all,
I am trying to create a sales invoicing system. Everything is OK but I want to round off (+ or -) the value.
Suppose if Invoice Amount is Rupees 2500.65/-
The round off amount will be Rupees 2501.00/- (i.e. 2500.65 + 0.35)
but if the Invoice Amount is Rupees 2500.45/-
The round off amount will be Rupees 2500.00/- (i.e. 2500.45 - 0.45)
I tried the following function...
Private Function CalculateRoundOffAmount(ByVal autoCalculateRoundOff As Boolean) As Double
Dim result As Double = 0.0
result += CDbl(Me.TbRoundOff.Text)
Dim roundOff As Double = 0
Dim roundedOffTo As Double = 0
If autoCalculateRoundOff = True Then
roundOff = Math.Ceiling(result) - result
Else
roundOff = Me.TbRoundOff.Text
End If
roundedOffTo = result + roundOff
Me.TbRoundOff.Text = roundOff
Me.TbInvoiceValue.Text = roundedOffTo
Return roundedOffTo
End Function
TbRoundOff = A TextBox where the round off amount will be calculated and TbInvoiceValue.Text is the textbox where invoice value is being calculated.
and I implemented it in SaveData() method like CalculateRoundOffAmount(True) but nothing happened.
Please help...
|
|
|
|
|
You should not use floating point numbers for financial calculations, as they tend not to hold exact values. Use integer values and convert all your totals to NP. You can then do the rounding quite easily by converting to whole rupees and using the remainder to decide which way to round off.
Veni, vidi, abiit domum
|
|
|
|
|
Hi Richard,
many thanks for your quick reply. But could you please help me on coding method how would I do that ?
|
|
|
|
|
When you enter the money amounts, multiply the rupees by 100 and add the paisa, to give the total and convert to (and save as) integer type. You can then perform all currency calculations on these integer values. When you wish to print or display the values you will divide by 100 to get the round number of rupees and use the Mod operator to get the remainder (paisa). You can then print the two values to give tha absolute total, or use the paisa value to decide whether to round up or down. My knowledge of Visual Basic is not very good, so you will have to turn that into code for yourself.
Veni, vidi, abiit domum
|
|
|
|
|
Thanks Richard,
Let me try it first.
Thanks again.
|
|
|
|
|
Richard MacCutchan wrote: Use integer values and convert all your totals to NP.
Or use the built-in Decimal[^] type, which does that for you.
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
Thanks, I forgot about that.
Veni, vidi, abiit domum
|
|
|
|
|
Hi all,
Thank you for your ideas. I solved the problem.
Thanks again...
Regards.
|
|
|
|
|
Okay, so basically I have 3 forms..
The first form asks the user questions, the second form is a loading gif while the third form processes the information into a database. So all the processing happens in the third form while the second form shows a gif saying that the form is loading.
Now when I insert a background worker into the third form, the form freezes and the second form doesnt even show up. What am I doing wrong?
This is my code:
Form 2:
Private Sub Wait1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ProfileSetup.Show()
ProfileSetup.Visible = False
End Sub
Form3:
Private Sub ProfileSetup_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Visible = False
TextBox1.ReadOnly = True
TextBox1.Enabled = False
TextBox2.ReadOnly = True
TextBox2.Enabled = False
TextBox3.ReadOnly = True
TextBox3.Enabled = False
TextBox4.ReadOnly = True
TextBox4.Enabled = False
TabControl1.Hide()
GroupBox1.Hide()
TabControl1.SendToBack()
GroupBox1.SendToBack()
CheckForIllegalCrossThreadCalls = False
BackgroundWorker1.RunWorkerAsync()
End Sub
Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
TextBox1.Text = UsersTableAdapter1.LoggedInUser(True)
TextBox2.Text = UsersTableAdapter1.PasswordGet(TextBox1.Text)
TextBox3.Text = UsersTableAdapter1.EmailGet(TextBox1.Text)
Variables.avatar = PictureBox1.BackgroundImage
original = PictureBox1.BackgroundImage
previous = PictureBox202
PictureBox202.Hide()
TextBox4.Text = UsersTableAdapter1.RankGet(UsersTableAdapter1.LoggedInUser(True))
End Sub
Private Sub BackgroundWorker1_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
Wait1.Close()
Me.Visible = True
End Sub
What I actually want the program to do is display form 2 with the gif while form 3 is getting ready, when it is ready form 3 opens in gui mode while form 2 closes.
Any help please?
|
|
|
|