我收到错误'运行时错误3157:ODBC - 在链接表上更新'' ???失败'当我尝试通过VB6代码更新表,但更新通过MS Access正常工作。
我使用MS Access作为SQL 2008的前端。
表架构是:
CREATE TABLE [varijable] (
[rabat_racuni] FLOAT DEFAULT 0,
[rabat_diskont] FLOAT DEFAULT 0,
[napomena_racuni] NTEXT,
[napomena_predracuni] NTEXT,
[napomena_diskont] NTEXT,
[napomena_revers] NTEXT,
[putanja_artikli] NVARCHAR(225),
[rab] FLOAT DEFAULT 0,
[prodaja] INTEGER DEFAULT 0,
[profaktura] INTEGER DEFAULT 0,
[faktura] INTEGER DEFAULT 0,
[revers] INTEGER DEFAULT 0,
[dan_azur] DATETIME,
[status] SMALLINT,
[oznaka_goriva] NVARCHAR(50),
[naknada_goriva] FLOAT,
[sifra_naknade] NVARCHAR(255),
[server_baza] NTEXT,
[an] [INTEGER] IDENTITY NOT NULL,
CONSTRAINT [varijable$an] PRIMARY KEY ([an])
);
GO
代码更新:
'odredi broj
Data28.RecordSource = "select * from varijable"
Data28.Refresh
'ispravi brojeve u datoteci rednih brojeva
Data28.Recordset.Edit
If Combo4.ListIndex = 0 Then
br = Data28.Recordset.Fields("prodaja") + 1
Data28.Recordset.Fields("prodaja") = br
End If
If Combo4.ListIndex = 1 Then
br = Data28.Recordset.Fields("profaktura") + 1
Data28.Recordset.Fields("profaktura") = br
End If
If Combo4.ListIndex = 2 Then
br = Data28.Recordset.Fields("faktura") + 1
Data28.Recordset.Fields("faktura") = br
End If
If Combo4.ListIndex = 3 Then
br = Data28.Recordset.Fields("revers") + 1
Data28.Recordset.Fields("revers") = br
End If
''on error GoTo greska
Data28.Recordset.Update <----- Throws error 3157
为什么VB6在没有表名的情况下给我错误,而是给出了&#39; ???&#39;
答案 0 :(得分:1)
3157通常是由规则违规引起的。 这可能意味着:
ODBC数据库是只读的,或者与ODBC连接关联的帐户没有更新该数据库中数据的权限。
ODBC连接失败(连接字符串错误)
我首先检查连接是否适用于任何查询,如果是,是否有任何创建语句通过VB工作?