Error: "insufficient information on the base table for update" Delphi Berlin + SAP MAXDB database on Windows 10 64bits 10

Asked

Viewed 105 times

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:

  1. Windows 10 64bits (machine where I have Windows 10 installed and with the system running)
  2. bank connection via ODBC
  3. Server 2003 with BD SAP MAXDB installed
  4. Simple application VCL Delphi Berlin with TADOConnection + TADOQuery + DATASource + DBGrid + DBNavigator and an example query: select * from CAIXA
  5. The query works normally when giving open brings some inserted records from another system.
  6. test in the dbgrid giving a append line and then type in 2 fields (cod and descr) and when will the aplyUpdates (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:

  • Put a [mcve] that reproduces this scenario you described.

  • I don’t understand what I need around here to make clear to you. simple example of this and you close the question

  • Maybe when you say "that returns this error" you should report the error?

  • 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

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.