• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 574
  • Last Modified:

VFP 9 MySQL Select Data Type Problem

Hi All. I have an FP ap that I've been using for a couple of years now that selects data from around 50 mysql tables. All has been working fine until today when I installed the ap on a second PC.

On this PC and this PC ONLY I'm having a problem with some of the selects.  Everything still works fine on the original PC. Both are WinXP SP3 utilizing ODBC 3.51.

The problems seem to stem from data type issues. Most I have fixed with simple IF vartype statements.

But one I simply can't get a handle on. The data is being selected from a MySQL 5.1.33 server running on WinXP SP3. The FieldType is Decimal 6,2.

After I connect to the db, I simply run:

lcQuery="SELECT nh1 FROM " + lcTableName

and use SQLEXEC to place the value into a Cursor.

The value of nh1 in the table is 0.190

However, any attempt to use the value returned as Numeric, for example a simple if statement:

IF (nh1 < 2)
      WAIT WINDOW "T"
ELSE
      WAIT WINDOW "F"
ENDIF

fails with a mismatched data type error. It seems the date type of the value returned is Text.

I've tried using VARTYPE to change the data type, I've tried CAST, nothing seems to work.

Can someone PLEASE show me how to Convert this data to numeric, either in FP (preferrable) or in MySQL as it's being selected from the table?? Thx!!

0
formadmirer
Asked:
formadmirer
  • 2
  • 2
1 Solution
 
apresenceCommented:
In MySQL, try:
lcQuery="SELECT CAST(nh1 AS DECIMAL(6,2)) FROM " + lcTableName
0
 
formadmirerAuthor Commented:
apresence, thanks, but I actually did already try that. The value returned, when tested with the simple vartype IF statement, still evaluates to being text and can't be used in any numeric comparison statements without generating the mismatch data type error.

I know it SHOULD work, it's just not.
0
 
apresenceCommented:
@formadmirer: Yeah, I know you said you had tried it, but I figured it was worth a shot.

I'm not sure what's going on.  If I had to guess, ODBC is being confused about the data types.  Have you tried installing the latest MySQL ODBC drivers?  If the versions are different from the PC that is working and the one that isn't, that's a pretty good culprit to look at.
0
 
formadmirerAuthor Commented:
Unbelievable - you hit the nail on the head. After nearly 3 hours trying to figure this out, I had just thought to check the odbc drivers myself.

My PC (where the ap was designed) is using 3.51.17, the new PC, 3.51.11.

Updated the new PC to the same driver as mine and VOILA! - it now works!

Thanks for the help - you get the points.
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now