[AccessD] db execute on linked vs local table

James Button jamesbutton at blueyonder.co.uk
Tue Feb 1 08:44:40 CST 2022


NO
That's the trap 

Almost all coding and data processing facilities consider 0 to be a numeric representation of FALSE
as in a way to store and test for FALSE as in the stored or tested value being zero, and ideally binary value at that.

As far as programming and using apps to check for TRUE - some  will test > 0, some <0, and many <> 0

With YOU having to be aware that a float version of decimal 0.00 may not actually be zero, but have a non-zero as the least significant digit of a floating point version of the number that was actually entered.

So =0 is not a good test  neither is testing one numerical value - another
 Better to test   the abs of the difference is less than  the accuracy you want - remembering the 16 decimal digit limit to numbers  on many CPU's
 As in 12345678901234500 + 1 is still 12345678901234500
And 
 As in 123456789012345 + 0.12 is still 123456789012345

JimB.

-----Original Message-----
From: AccessD <accessd-bounces+jamesbutton=blueyonder.co.uk at databaseadvisors.com> On Behalf Of Ryan W
Sent: Tuesday, February 1, 2022 1:38 PM
To: Access Developers discussion and problem solving <accessd at databaseadvisors.com>
Subject: Re: [AccessD] db execute on linked vs local table

So I’ve got what is likely a naïve question but if access considers true -1 and SQL Server considers true one why do the checkboxes work when you interact with them is it just because anything that’s not zero is true?

Sent from my iPhone

> On Feb 1, 2022, at 4:36 AM, James Button via AccessD <accessd at databaseadvisors.com> wrote:
> 
> Re NOT FALSE 
> 
> From memory that has been a long standing advice  as  various 'programming' languages  and Apps have different ideas of what equates to TRUE
> 
> As in Office and VBA  differ
> Similar concerns apply to ROUND with values that are 1/2 of the rounding level.
> And the handling of bit values stored in Bytes. 
> 
> JimB 
> 
> 
> -----Original Message-----
> From: AccessD <accessd-bounces+jamesbutton=blueyonder.co.uk at databaseadvisors.com> On Behalf Of Ryan Wehler
> Sent: Tuesday, February 1, 2022 3:04 AM
> To: Access Developers discussion and problem solving <accessd at databaseadvisors.com>
> Subject: Re: [AccessD] db execute on linked vs local table
> 
> The back end is SQL Server 2008. 
> 
> I just find it odd that true fails to a null column (with nulls allowed), but false passes fine
> 
> I will say I discovered this is an issue with option dbFailOnError for .execute. If I leave that off the profiler shows a prepared statement does as expected. 
> 
> I’ve found some other posts out there about dbFailOnError causing linked table grief: 
> 
> 
> https://stackoverflow.com/questions/55272323/ms-access-with-sql-server-back-end-update-fails-without-error
> 
> 
> https://www.utteraccess.com/topics/2013762/posts/2431750
> 
> 
> 
> 
>> On Jan 31, 2022, at 8:29 PM, Paul Wolstenholme <Paul.W at industrialcontrol.co.nz> wrote:
>> 
>> Ryan,
>> 
>> There is general agreement that FALSE = 0.
>> In the absence of any generally accepted definition of TRUE (other than "<>
>> FALSE" or "NOT FALSE") I refuse to write code that contains "TRUE".  Maybe
>> it keeps me out of unnecessary trouble.
>> Sometimes TRUE gets turned into 1 and sometimes it gets turned into one of
>> the versions of -1 (with any number of bits).  Sometimes what you get isn't
>> what you need.
>> 
>> You haven't stated whether the back end table is Access or something else.
>> It can make a difference.
>> Some also believe in avoiding the yes/no field type in Access tables (
>> http://allenbrowne.com/NoYesNo.html) so perhaps you are using a numeric
>> Access field?
>> 
>> Paul Wolstenholme
>> 
>>>> On Tue, 1 Feb 2022 at 10:14, Ryan W <wrwehler at gmail.com> wrote:
>>> 
>>> More info:
>>> 
>>> If I set the column to not allow nulls, db.execute tries to set it as NULL
>>> but then a prepared statement comes in after the fact and does indeed set
>>> it to true.
>>> 
>>> https://i.imgur.com/m8TSBN6.png
>>> 
>>>> On Mon, Jan 31, 2022 at 2:40 PM Ryan W <wrwehler at gmail.com> wrote:
>>>> 
>>>> Upon more testing it seems like FALSE (without quotes) works as well. It
>>>> just seems to be TRUE (no quotes) sets my remote bit column to NULL.
>>>> 
>>>> Here's a SQL Profiler:
>>>> 
>>>> https://i.imgur.com/rVx3vmX.png
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>>> On Mon, Jan 31, 2022 at 1:48 PM Ryan W <wrwehler at gmail.com> wrote:
>>>> 
>>>>> Is there a reason db.execute syntax is a bit different on a linked
>>> (ODBC)
>>>>> vs local (DAO?)
>>>>> 
>>>>> db.execute "UPDATE tbl SET col_A = TRUE" works as expected locally.
>>>>> 
>>>>> where run on a linked table, it NULLs out the bit field.
>>>>> 
>>>>> but db.execute "UPDATE tbl set col_A = 'TRUE'"  or db.execute "UPDATE
>>> tbl
>>>>> set col_A = 1" works remotely and the numerical representation of
>>>>> true/false works both remote AND locally.
>>>>> 
>>>>> However 'TRUE' or 'FALSE' with the single quotes on a local table gives
>>> a
>>>>> data type mismatch (which makes sense, because it's treating it as a
>>>>> literal and not converting it to 1/0.
>>>>> 
>>>>> 
>>>>> I guess my question is, is it the difference in the DAO engine vs the
>>>>> ODBC layer that is turning my BIT field NULL (linked) versus local?
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>> --
>>> AccessD mailing list
>>> AccessD at databaseadvisors.com
>>> https://databaseadvisors.com/mailman/listinfo/accessd
>>> Website: http://www.databaseadvisors.com
>>> 
>> -- 
>> AccessD mailing list
>> AccessD at databaseadvisors.com
>> https://databaseadvisors.com/mailman/listinfo/accessd
>> Website: http://www.databaseadvisors.com
> -- 
> AccessD mailing list
> AccessD at databaseadvisors.com
> https://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com
> 
> -- 
> AccessD mailing list
> AccessD at databaseadvisors.com
> https://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com
-- 
AccessD mailing list
AccessD at databaseadvisors.com
https://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com



More information about the AccessD mailing list