SDK 3.00 .net provider and MS visual studio



Database is Informix Online 9.40 on a Sun Solaris machine, connecting from a windows XP client machine with SDK 3.00.TC3 installed (.net provider).

Using visual studio 2008; can successfully connect to the database and populate a dataset, but cannot flush changes in the dataset back to the base. On the IfxDataAdaptorBankTrans.Update method I am getting the error 'Unknown SQL Type - 0'. Has anyone seen this before with the Informix .net provider? I can update the row fine in dbaccess/winsql.

We are in the process of moving from VB6 to VS2008 so there may well be errors in my VB code... I had to adapt it from C# examples found on IBMs website.

The .net provider requires a stored procedure to be run on the server before the .net provider can be used - this has been done.

Thanks in advance...



Table Schema:



DBSCHEMA Schema Utility INFORMIX-SQL Version 9.40.UC3
Copyright (C) Informix Software, Inc., 1984-1997
{ TABLE bank_trans_net row size = 83 number of columns = 9 index size
= 50 }
create table bank_trans_net
(
ser serial not null ,
source char(20) not null ,
client_no integer not null ,
trans_code char(2) not null ,
trans_date date not null ,
descr char(30),
trans_val money(12,2) not null ,
uname char(8) not null ,
updated date not null ,

check (ser > 0 ),

check (client_no > 0 )
);

create index ix_bt1n on bank_trans_net (client_no)
using btree ;
create unique index ix_bt5n on bank_trans_net
(ser) using btree ;
create index ix_bt6n on bank_trans_net (source)
using btree ;
create index ix_bt7n on bank_trans_net (trans_code)
using btree ;
alter table bank_trans_net add constraint primary
key (ser) ;


VB code follows:


Option Strict On
Imports System.Data
Imports IBM.Data.Informix

Public Class MainForm

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim ifxConn As New IBM.Data.Informix.IfxConnection


Try
ifxConn.ConnectionString="database=xxxxxx;server=xxxxxxx;host=10.10.10.10;uid=userid;pwd=password;protocol=onsoctcp;service=2769;"

ifxConn.Open()

Dim IfxDataAdaptorBankTrans As New IBM.Data.Informix.IfxDataAdapter
Dim CmdUpdateBankTrans As New IBM.Data.Informix.IfxCommand
Dim CmdSelectBankTrans As New IBM.Data.Informix.IfxCommand


CmdSelectBankTrans.CommandText = "select ser, source, client_no, trans_code, trans_date, " & _
" descr, trans_val, uname, updated from bank_trans_net where client_no = 1755"
IfxDataAdaptorBankTrans.SelectCommand = CmdSelectBankTrans
IfxDataAdaptorBankTrans.SelectCommand.Connection = ifxConn

Dim ifxCBuild As New IfxCommandBuilder(IfxDataAdaptorBankTrans)
IfxDataAdaptorBankTrans.UpdateCommand = ifxCBuild.GetUpdateCommand
IfxDataAdaptorBankTrans.UpdateCommand.Connection = ifxConn

Dim BankdataSet As New DataSet
IfxDataAdaptorBankTrans.Fill(BankdataSet, "bank_trans_net")
BankdataSet.Tables.Item(0).TableName = "bank_trans_net"

Dim _Row As DataRow

For Each _Row In BankdataSet.Tables.Item("bank_trans_net").Rows
If CType(_Row("ser"), Integer) = 2443150 Then
ClientNumber.Text = _Row("descr").ToString
_Row("descr") = "Changed"

ClientNumber.Text = _Row("descr").ToString
End If
Next


For Each _Row In BankdataSet.Tables.Item("bank_trans_net").Rows
ListBox1.Items.Add(_Row("descr"))
Next

Dim newDataSet As DataSet
newDataSet = BankdataSet.GetChanges()

IfxDataAdaptorBankTrans.Update(newDataSet, "bank_trans_net")
BankdataSet.Tables("bank_trans_net").AcceptChanges()


Catch ex As Exception
MsgBox("Error " & ex.Message)

End Try
End Sub
End Class

.