Unidac 8.4.4 problem in query parameters
Posted: Thu 29 Jul 2021 07:59
Dear all,
here we go with another problem in 8.4 series with the same code working correctly on 8.3.2:
All the values I put into params are ok (dates are TDate, numeric fields are currency and integers are integer), the same code with same values works on 8.3.2
When you execute the insert query you have an invalid input syntax for type numeric "" error message, but DBMonitor shows me that I load the correct param values.
Can you check it please? I really need to start working on PostgreSQL 13.
My system configuration:
Delphi 10.4.2
PostgreSQL 12.7
UniDAC 8.4.4
Regards.
Sergio
here we go with another problem in 8.4 series with the same code working correctly on 8.3.2:
Code: Select all
CREATE TABLE public.motrici_assicurazioni (
mas_targa char(10) NOT NULL,
mas_anno_competenza integer NOT NULL DEFAULT 0,
mas_compagnia integer NOT NULL,
mas_nr_documento varchar(80) NOT NULL,
mas_data_inizio date,
mas_data_scadenza date,
mas_importo_01 numeric(12,2) DEFAULT 0,
mas_importo_02 numeric(12,2) DEFAULT 0,
mas_importo_03 numeric(12,2) DEFAULT 0,
mas_importo_04 numeric(12,2) DEFAULT 0,
mas_importo_05 numeric(12,2) DEFAULT 0,
mas_importo_06 numeric(12,2) DEFAULT 0,
mas_importo_07 numeric(12,2) DEFAULT 0,
mas_importo_08 numeric(12,2) DEFAULT 0,
mas_importo_09 numeric(12,2) DEFAULT 0,
mas_importo_10 numeric(12,2) DEFAULT 0,
mas_importo_11 numeric(12,2) DEFAULT 0,
mas_importo_12 numeric(12,2) DEFAULT 0,
mas_tipo_assicurazione char(4),
mas_note text,
CONSTRAINT pk_motrici_assicurazioni PRIMARY KEY (mas_targa, mas_anno_competenza, mas_compagnia, mas_nr_documento)
)
;
Code: Select all
qryDummy.SQL.Text :=
'INSERT INTO motrici_assicurazioni ( ' +
' mas_targa ' +
', mas_anno_competenza ' +
', mas_compagnia ' +
', mas_nr_documento ' +
', mas_data_inizio ' +
', mas_data_scadenza ' +
', mas_importo_01 ' +
', mas_importo_02 ' +
', mas_importo_03 ' +
', mas_importo_04 ' +
', mas_importo_05 ' +
', mas_importo_06 ' +
', mas_importo_07 ' +
', mas_importo_08 ' +
', mas_importo_09 ' +
', mas_importo_10 ' +
', mas_importo_11 ' +
', mas_importo_12 ' +
', mas_tipo_assicurazione ' +
', mas_note ' +
') VALUES ( ' +
' :targa ' +
', :anno_competenza ' +
', :fornitore ' +
', :nr_documento ' +
', :data_inizio ' +
', :data_scadenza ' +
', :importo_01 ' +
', :importo_02 ' +
', :importo_03 ' +
', :importo_04 ' +
', :importo_05 ' +
', :importo_06 ' +
', :importo_07 ' +
', :importo_08 ' +
', :importo_09 ' +
', :importo_10 ' +
', :importo_11 ' +
', :importo_12 ' +
', :tipo_assicurazione ' +
', :note ' +
') ' +
'ON CONFLICT (mas_targa, mas_anno_competenza, mas_compagnia, mas_nr_documento) ' +
'DO UPDATE SET ' +
' mas_importo_01 = EXCLUDED.mas_importo_01 ' +
', mas_importo_02 = EXCLUDED.mas_importo_02 ' +
', mas_importo_03 = EXCLUDED.mas_importo_03 ' +
', mas_importo_04 = EXCLUDED.mas_importo_04 ' +
', mas_importo_05 = EXCLUDED.mas_importo_05 ' +
', mas_importo_06 = EXCLUDED.mas_importo_06 ' +
', mas_importo_07 = EXCLUDED.mas_importo_07 ' +
', mas_importo_08 = EXCLUDED.mas_importo_08 ' +
', mas_importo_09 = EXCLUDED.mas_importo_09 ' +
', mas_importo_10 = EXCLUDED.mas_importo_10 ' +
', mas_importo_11 = EXCLUDED.mas_importo_11 ' +
', mas_importo_12 = EXCLUDED.mas_importo_12 ' +
'; ';
qryDummy.ParamByName('targa').AsString := targa;
qryDummy.ParamByName('anno_competenza').AsInteger := annoCompetenza + 1;
qryDummy.ParamByName('fornitore').AsInteger := cdFornitore;
qryDummy.ParamByName('nr_documento').AsString := nrDocumento;
qryDummy.ParamByName('data_inizio').AsDate := dataInizio;
qryDummy.ParamByName('data_scadenza').AsDate := dataFine;
qryDummy.ParamByName('importo_01').AsCurrency := importo[01];
qryDummy.ParamByName('importo_02').AsCurrency := importo[02];
qryDummy.ParamByName('importo_03').AsCurrency := importo[03];
qryDummy.ParamByName('importo_04').AsCurrency := importo[04];
qryDummy.ParamByName('importo_05').AsCurrency := importo[05];
qryDummy.ParamByName('importo_06').AsCurrency := importo[06];
qryDummy.ParamByName('importo_07').AsCurrency := importo[07];
qryDummy.ParamByName('importo_08').AsCurrency := importo[08];
qryDummy.ParamByName('importo_09').AsCurrency := importo[09];
qryDummy.ParamByName('importo_10').AsCurrency := importo[10];
qryDummy.ParamByName('importo_11').AsCurrency := importo[11];
qryDummy.ParamByName('importo_12').AsCurrency := importo[12];
qryDummy.ParamByName('tipo_assicurazione').AsString := cdTipoAssicurazione;
qryDummy.ParamByName('note').AsWideString := nota;
When you execute the insert query you have an invalid input syntax for type numeric "" error message, but DBMonitor shows me that I load the correct param values.
Can you check it please? I really need to start working on PostgreSQL 13.
My system configuration:
Delphi 10.4.2
PostgreSQL 12.7
UniDAC 8.4.4
Regards.
Sergio