Thread: Problem with driver ODBC / VB

Problem with driver ODBC / VB

From
"Kalitech"
Date:
Hello,
=20
These tests are done with the 2 versions of the driver 7.3
=20
Table User description : u_num int4 nextval( =85), u_comm varchar(512)
=20
In my table I have one row :=20
            u_num              1
            u_comm           =91hello world <CR><LF> all is fine.=92
=20
Imagine I want to delete this row
            Sql =3D =93select * from user where u_num=3D1=94
            Set rs =3D odbc_cnx.OpenResultset( sql, rdOpenKeyset,
rdConcurRowver )
            Rs.Edit
            Rs.delete
            Rs.close
The row is not deleted. Of course because in the log file, I find
            Sql =3D =93Delete from user where u_num=3D1 and u_comm=3D=91hel=
lo
world
all is fine.=92=94
=20
I have found how to do :
            Sql =3D =93select u_num from user where u_num=3D1=94
            Set rs =3D odbc_cnx.OpenResultset( sql, rdOpenKeyset,
rdConcurRowver )
            Rs.Edit
            Rs.delete
            Rs.close
And now it is ok since in the log file, I find
            Sql =3D =93Delete from user where u_num=3D1=94
=20
But I have the same problem with update :
            Sql =3D =93select u_num, u_comm from user where u_num=3D1=94
            Set rs =3D odbc_cnx.OpenResultset( sql, rdOpenKeyset,
rdConcurRowver )
            Rs.Edit
            Rs(=93u_comm=94).value =3D =93bonjour=94
            Rs.update
            Rs.close
In the log file, I find
            Sql =3D =93Update from user set u_comm=3D=92bonjour=92 where u_=
num=3D1
and u_comm=3D=91hello world
all is fine.=92=94
Is there anything to do to obtain from the driver something like :
            Sql =3D =93Update from user set u_comm=3D=92bonjour=92 where u_=
num=3D1=94
Since we don=92t need the second clause.
=20
Thank you very much if you have a solution.
=20
H=E9l=E8ne FESTOC
Kalitech - 01 69 41 97 54
=20
=20

Re: Problem with driver ODBC / VB

From
Hendrik Müller
Date:
Kalitech schrieb:
> Hello,
>
>
>
> These tests are done with the 2 versions of the driver 7.3
>
>
>
> Table User description : u_num int4 nextval( …), u_comm varchar(512)
>
>
>
> In my table I have one row :
>
>             u_num              1
>
>             u_comm           ‘hello world <CR><LF> all is fine.’
>
>
>
> Imagine I want to delete this row
>
>             Sql = “select * from user where u_num=1”
>
>             Set rs = odbc_cnx.OpenResultset( sql, rdOpenKeyset,
> rdConcurRowver )
>
>             Rs.Edit
>
>             Rs.delete
>
>             Rs.close
>
> The row is not deleted. Of course because in the log file, I find
>
>             Sql = “Delete from user where u_num=1 and u_comm=‘hello world
>
> all is fine.’”
>
>
>
> I have found how to do :
>
>             Sql = “select u_num from user where u_num=1”
>
>             Set rs = odbc_cnx.OpenResultset( sql, rdOpenKeyset,
> rdConcurRowver )
>
>             Rs.Edit
>
>             Rs.delete
>
>             Rs.close
>
> And now it is ok since in the log file, I find
>
>             Sql = “Delete from user where u_num=1”
>
>
>
> But I have the same problem with update :
>
>             Sql = “select u_num, u_comm from user where u_num=1”
>
>             Set rs = odbc_cnx.OpenResultset( sql, rdOpenKeyset,
> rdConcurRowver )
>
>             Rs.Edit
>
>             Rs(“u_comm”).value = “bonjour”
>
>             Rs.update
>
>             Rs.close
>
> In the log file, I find
>
>             Sql = “Update from user set u_comm=’bonjour’ where u_num=1
> and u_comm=‘hello world
>
> all is fine.’”
>
> Is there anything to do to obtain from the driver something like :
>
>             Sql = “Update from user set u_comm=’bonjour’ where u_num=1”
>
> Since we don’t need the second clause.
>
>
>
> Thank you very much if you have a solution.
>
>
>
> Hélène FESTOC
>
> Kalitech - 01 69 41 97 54
Your must set an index on u_num.