1
I’m beginner here on the site, I tried for a print but do not know if da. but I will try to detail the whole scenario:
- Windows 10 64bits (machine where I have Windows 10 installed and with the system running)
- bank connection via ODBC
- Server 2003 with BD SAP MAXDB installed
- Simple application VCL Delphi Berlin with
TADOConnection
+TADOQuery
+DATASource
+DBGrid
+DBNavigator
and an example query:select * from CAIXA
- The query works normally when giving open brings some inserted records from another system.
- test in the
dbgrid
giving aappend
line and then type in 2 fields (cod
anddescr
) and when will theaplyUpdates
(Apply button in Navigator) that returns this error: "insufficient information about the base table for update"
If I use clientDataSet instead of Tadoquery to apply the post/applyupdades the problem does not happen but does not save the data in the database
If I run this app in versions prior to Windows 10 this problem does not occur and write normally. I have tested in 8.1, 7 and Vista. In Windows server 2012 this problem also occurs.
Follow the code below the 2 only Unit I have in the project:
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DB, Data.Win.ADODB, Vcl.StdCtrls,
FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Error, FireDAC.UI.Intf,
FireDAC.Phys.Intf, FireDAC.Stan.Def, FireDAC.Stan.Pool, FireDAC.Stan.Async,
FireDAC.Phys, FireDAC.Phys.ODBC, FireDAC.Phys.ODBCDef, FireDAC.VCLUI.Wait,
FireDAC.Stan.Param, FireDAC.DatS, FireDAC.DApt.Intf, FireDAC.DApt,
FireDAC.Phys.ODBCBase, FireDAC.Comp.DataSet, FireDAC.Comp.Client;
type
TForm1 = class(TForm)
Button1: TButton;
ADOConnection1: TADOConnection;
fivenews: TADOConnection;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses Unit2;
procedure TForm1.Button1Click(Sender: TObject);
begin
Application.CreateForm(TForm2, Form2);
Form2.Show;
end;
end.
unit Unit2;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DB, Vcl.Grids, Vcl.DBGrids,
Data.Win.ADODB, Vcl.StdCtrls, Vcl.Mask, Vcl.DBCtrls, Vcl.ExtCtrls;
type
TForm2 = class(TForm)
qCaixa: TADOQuery;
DBGrid1: TDBGrid;
dsCaixa: TDataSource;
qCaixaCX_CODIGO: TBCDField;
qCaixaCX_NOME: TStringField;
Label1: TLabel;
DBEdit1: TDBEdit;
Label2: TLabel;
DBEdit2: TDBEdit;
DBNavigator1: TDBNavigator;
qCaixaCX_SALDO: TFloatField;
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
uses Unit1;
procedure TForm2.FormShow(Sender: TObject);
begin
qCaixa.Open;
end;
end.
it’s detailed, I don’t understand what else you need but let’s go there:
– Charles
Put a [mcve] that reproduces this scenario you described.
– Augusto Vasques
I don’t understand what I need around here to make clear to you. simple example of this and you close the question
– Charles
Maybe when you say "that returns this error" you should report the error?
– anonimo
blz, is that when I edited the text had lost the message but the error is this: insufficient information on the base table for update
– Charles