Problema com famoso erro: Arithmetic exception...
Seguinte:
Tenho o seguinte banco (o qual também uso em PostgreSQL sem nenhum problema). Quero que o meu sistema possa utilizar os 2 bancos ao gosto do usuário.
Script do banco:
Ok. Este banco de dados foi criado com o dialeto 3 e o charset WIN1252
Utilizo três SP criadas no banco para 3 relatórios distintos (agendamento,atendimento,faltas) e no Delphi uso um sqlQuery para dados_mestre e um sqlQuery para dados_detalhe(dbexpress,datasetprovider,clientdataset).
Observação: No Postgresql as SP tambem existem e o programa funciona.
Vou dar o exemplo com a SP agendamento. A qual tem 3 parâmetros:
- Data
- Código do Local
- Atendido (S ou N)
Então criei duas sqlQuery como descrito acima.
Nota: No Postrgresql cada query está sem o AGENDAMENTO.
Usei com o FB pois o delphi não põe o campo COD_DENT no fields editor.
Crio os ClientDatasets para cada sqlQuery e quando vou inserir os campos no fields editor:
´ARITHMETIC EXCEPTION, NUMERIC OVERFLOW, OR STRING TRUNCATION´
Estranho é que ao repetir a operação, consigo incluir os campos e até abrir o Dataset. Mas na execução do programa o erro persiste.
Quanto a conexão, ela é feita com o charset e o dialeto certos (creio eu).
No IBConsole ao executar cada query, funcionam direitinho.
Alguma ajuda?.
Tenho o seguinte banco (o qual também uso em PostgreSQL sem nenhum problema). Quero que o meu sistema possa utilizar os 2 bancos ao gosto do usuário.
Script do banco:
SET SQL DIALECT 3;
/* CREATE DATABASE ´c:\desen\agendawindows\agenda_fb.fdb´ PAGE_SIZE 4096
DEFAULT CHARACTER SET WIN1252 */
/* Table: AGENDA, Owner: SYSDBA */
CREATE TABLE "AGENDA"
(
"COD_DENT" VARCHAR(8) CHARACTER SET WIN1252 NOT NULL,
"COD_ESP" VARCHAR(4) CHARACTER SET WIN1252 NOT NULL,
"DATACONS" TIMESTAMP NOT NULL,
"HORA" VARCHAR(5) CHARACTER SET WIN1252 NOT NULL,
"COD_LOCAL" VARCHAR(5) CHARACTER SET WIN1252 NOT NULL,
"CODPLAN" VARCHAR(5) CHARACTER SET WIN1252 NOT NULL,
"CODEMP" VARCHAR(6) CHARACTER SET WIN1252 NOT NULL,
"CONVENIO" VARCHAR(25) CHARACTER SET WIN1252,
"NUM" VARCHAR(20) CHARACTER SET WIN1252,
"NOME" VARCHAR(30) CHARACTER SET WIN1252,
"ATENDIDO" VARCHAR(1) CHARACTER SET WIN1252,
"AMB" VARCHAR(11) CHARACTER SET WIN1252,
"TELEFONE" VARCHAR(15) CHARACTER SET WIN1252,
"RETORNO" VARCHAR(1) CHARACTER SET WIN1252,
"QTDE" INTEGER,
"LOGIN" VARCHAR(15) CHARACTER SET WIN1252,
"TEMPO" INTEGER,
CONSTRAINT "CHAVE_AGENDA" PRIMARY KEY ("COD_DENT", "COD_ESP", "DATACONS", "HORA", "COD_LOCAL")
);
/* Table: AMB, Owner: SYSDBA */
CREATE TABLE "AMB"
(
"CODAMB" VARCHAR(11) CHARACTER SET WIN1252 NOT NULL,
"DESCAMB" VARCHAR(30) CHARACTER SET WIN1252 NOT NULL,
"QTDE_CH" INTEGER,
CONSTRAINT "CHAVE_AMB" PRIMARY KEY ("CODAMB")
);
/* Table: ATENDIMENTOS_AGENDA, Owner: SYSDBA */
CREATE TABLE "ATENDIMENTOS_AGENDA"
(
"COD_DENT" VARCHAR(8) CHARACTER SET WIN1252 NOT NULL,
"COD_ESP" VARCHAR(4) CHARACTER SET WIN1252 NOT NULL,
"DATACONS" TIMESTAMP NOT NULL,
"HORA" VARCHAR(5) CHARACTER SET WIN1252 NOT NULL,
"COD_LOCAL" VARCHAR(2) CHARACTER SET WIN1252 NOT NULL,
"CODPLAN" VARCHAR(5) CHARACTER SET WIN1252 NOT NULL,
"CODEMP" VARCHAR(6) CHARACTER SET WIN1252 NOT NULL,
"CONVENIO" VARCHAR(25) CHARACTER SET WIN1252,
"NUM" VARCHAR(20) CHARACTER SET WIN1252,
"NOME" VARCHAR(30) CHARACTER SET WIN1252,
"ATENDIDO" VARCHAR(1) CHARACTER SET WIN1252,
"AMB" VARCHAR(11) CHARACTER SET WIN1252,
"TELEFONE" VARCHAR(15) CHARACTER SET WIN1252,
"RETORNO" VARCHAR(1) CHARACTER SET WIN1252,
"QTDE" INTEGER,
"LOGIN" VARCHAR(15) CHARACTER SET WIN1252,
"TEMPO" INTEGER,
CONSTRAINT "CHAVE_ATENDAGENDA" PRIMARY KEY ("COD_DENT", "COD_ESP", "DATACONS", "HORA", "COD_LOCAL", "CODPLAN", "CODEMP")
);
/* Table: CONVENIO, Owner: SYSDBA */
CREATE TABLE "CONVENIO"
(
"CODCONV" VARCHAR(11) CHARACTER SET WIN1252 NOT NULL,
"DESCR" VARCHAR(30) CHARACTER SET WIN1252 NOT NULL,
CONSTRAINT "CHAVE_CONV" PRIMARY KEY ("CODCONV")
);
/* Table: EMPRESAS, Owner: SYSDBA */
CREATE TABLE "EMPRESAS"
(
"CODEMPR" VARCHAR(6) CHARACTER SET WIN1252 NOT NULL,
"NOMEMP" VARCHAR(30) CHARACTER SET WIN1252,
CONSTRAINT "CHAVE_EMP" PRIMARY KEY ("CODEMPR")
);
/* Table: ESPE, Owner: SYSDBA */
CREATE TABLE "ESPE"
(
"CODESP" VARCHAR(4) CHARACTER SET WIN1252 NOT NULL,
"DESCESP" VARCHAR(40) CHARACTER SET WIN1252,
"SEXO" VARCHAR(1) CHARACTER SET WIN1252,
"ID_INICIAL" INTEGER,
"ID_FINAL" INTEGER,
CONSTRAINT "CHAVE_ESP" PRIMARY KEY ("CODESP")
);
/* Table: ESPE_LOCAIS, Owner: SYSDBA */
CREATE TABLE "ESPE_LOCAIS"
(
"CODESP" VARCHAR(4) CHARACTER SET WIN1252 NOT NULL,
"COD_LOCAL" VARCHAR(5) CHARACTER SET WIN1252 NOT NULL,
CONSTRAINT "CHAVE_ESPLOCAL" PRIMARY KEY ("CODESP", "COD_LOCAL")
);
/* Table: FALTAS_AGENDA, Owner: SYSDBA */
CREATE TABLE "FALTAS_AGENDA"
(
"COD_DENT" VARCHAR(8) CHARACTER SET WIN1252 NOT NULL,
"COD_ESP" VARCHAR(4) CHARACTER SET WIN1252 NOT NULL,
"DATACONS" TIMESTAMP NOT NULL,
"HORA" VARCHAR(5) CHARACTER SET WIN1252 NOT NULL,
"COD_LOCAL" VARCHAR(2) CHARACTER SET WIN1252 NOT NULL,
"CODPLAN" VARCHAR(5) CHARACTER SET WIN1252 NOT NULL,
"CODEMP" VARCHAR(6) CHARACTER SET WIN1252 NOT NULL,
"CONVENIO" VARCHAR(25) CHARACTER SET WIN1252,
"NUM" VARCHAR(20) CHARACTER SET WIN1252,
"NOME" VARCHAR(30) CHARACTER SET WIN1252,
"ATENDIDO" VARCHAR(1) CHARACTER SET WIN1252,
"AMB" VARCHAR(11) CHARACTER SET WIN1252,
"TELEFONE" VARCHAR(15) CHARACTER SET WIN1252,
"RETORNO" VARCHAR(1) CHARACTER SET WIN1252,
"QTDE" INTEGER,
"LOGIN" VARCHAR(15) CHARACTER SET WIN1252,
"TEMPO" INTEGER,
CONSTRAINT "CHAVE_FALTASGENDA" PRIMARY KEY ("COD_DENT", "COD_ESP", "DATACONS", "HORA", "COD_LOCAL", "CODPLAN", "CODEMP")
);
/* Table: LOCAIS, Owner: SYSDBA */
CREATE TABLE "LOCAIS"
(
"COD_LOCAL" VARCHAR(5) CHARACTER SET WIN1252 NOT NULL,
"DESCR_LOCAL" VARCHAR(25) CHARACTER SET WIN1252 NOT NULL,
CONSTRAINT "CHAVE_LOCAL" PRIMARY KEY ("COD_LOCAL")
);
/* Table: LOCAIS_EXCECOES, Owner: SYSDBA */
CREATE TABLE "LOCAIS_EXCECOES"
(
"COD_LOCAL" VARCHAR(5) CHARACTER SET WIN1252 NOT NULL,
"DATA" TIMESTAMP NOT NULL,
CONSTRAINT "PF_LOCALEXCECOES" PRIMARY KEY ("COD_LOCAL", "DATA")
);
/* Table: MEDICOS, Owner: SYSDBA */
CREATE TABLE "MEDICOS"
(
"CRM" VARCHAR(8) CHARACTER SET WIN1252 NOT NULL,
"NOMED" VARCHAR(40) CHARACTER SET WIN1252,
"CODDP" INTEGER,
"CPF_CGC" VARCHAR(19) CHARACTER SET WIN1252,
"TEL" INTEGER,
"BIP" VARCHAR(8) CHARACTER SET WIN1252,
"INSS" VARCHAR(15) CHARACTER SET WIN1252,
"ISS" VARCHAR(15) CHARACTER SET WIN1252,
"ENDE" VARCHAR(50) CHARACTER SET WIN1252,
"BAIRRO" VARCHAR(30) CHARACTER SET WIN1252,
"CIDADE" VARCHAR(30) CHARACTER SET WIN1252,
"UF" VARCHAR(2) CHARACTER SET WIN1252,
"CEP" VARCHAR(8) CHARACTER SET WIN1252,
"STATUS" VARCHAR(1) CHARACTER SET WIN1252,
CONSTRAINT "CHAVE_MEDICOS" PRIMARY KEY ("CRM")
);
/* Table: MEDICOS_ESPECIALIDADES, Owner: SYSDBA */
CREATE TABLE "MEDICOS_ESPECIALIDADES"
(
"CRM" VARCHAR(8) CHARACTER SET WIN1252 NOT NULL,
"ESPE" VARCHAR(4) CHARACTER SET WIN1252 NOT NULL,
CONSTRAINT "CHAVE_MEDESPE" PRIMARY KEY ("CRM", "ESPE")
);
/* Table: MEDICOS_EXCECOES, Owner: SYSDBA */
CREATE TABLE "MEDICOS_EXCECOES"
(
"CRM" VARCHAR(8) CHARACTER SET WIN1252 NOT NULL,
"DATA" TIMESTAMP NOT NULL,
"HORARIO" VARCHAR(5) CHARACTER SET WIN1252 NOT NULL,
CONSTRAINT "CHAVE_EXMED" PRIMARY KEY ("CRM", "DATA", "HORARIO")
);
/* Table: MEDICOS_EXTRAS, Owner: SYSDBA */
CREATE TABLE "MEDICOS_EXTRAS"
(
"CRM" VARCHAR(8) CHARACTER SET WIN1252 NOT NULL,
"COD_LOCAL" VARCHAR(5) CHARACTER SET WIN1252 NOT NULL,
"HORA" VARCHAR(5) CHARACTER SET WIN1252 NOT NULL,
"DIA_DA_SEMANA" INTEGER NOT NULL,
"ESPE" VARCHAR(4) CHARACTER SET WIN1252 NOT NULL,
CONSTRAINT "CHAVE_MEDEXTRA" PRIMARY KEY ("CRM", "COD_LOCAL", "HORA", "DIA_DA_SEMANA")
);
/* Table: MEDICOS_HORARIOS, Owner: SYSDBA */
CREATE TABLE "MEDICOS_HORARIOS"
(
"CRM" VARCHAR(8) CHARACTER SET WIN1252 NOT NULL,
"COD_LOCAL" VARCHAR(5) CHARACTER SET WIN1252 NOT NULL,
"HORA" VARCHAR(5) CHARACTER SET WIN1252 NOT NULL,
"DIA_DA_SEMANA" INTEGER NOT NULL,
"ESPE" VARCHAR(4) CHARACTER SET WIN1252 NOT NULL,
CONSTRAINT "CHAVE_MEDHORA" PRIMARY KEY ("CRM", "COD_LOCAL", "HORA", "DIA_DA_SEMANA")
);
/* Table: MEDICOS_LOCAIS, Owner: SYSDBA */
CREATE TABLE "MEDICOS_LOCAIS"
(
"CRM" VARCHAR(8) CHARACTER SET WIN1252 NOT NULL,
"COD_LOCAL" VARCHAR(5) CHARACTER SET WIN1252 NOT NULL,
CONSTRAINT "CHAVE_MEDLOCAL" PRIMARY KEY ("CRM", "COD_LOCAL")
);
/* Table: MEDICOS_LOCAIS_ESPECIALIDADES, Owner: SYSDBA */
CREATE TABLE "MEDICOS_LOCAIS_ESPECIALIDADES"
(
"CRM" VARCHAR(8) CHARACTER SET WIN1252 NOT NULL,
"COD_LOCAL" VARCHAR(5) CHARACTER SET WIN1252 NOT NULL,
"ESPE" VARCHAR(4) CHARACTER SET WIN1252 NOT NULL,
CONSTRAINT "CHAVE_MEDLOCALESPE" PRIMARY KEY ("CRM", "COD_LOCAL", "ESPE")
);
/* Table: PACIENTES, Owner: SYSDBA */
CREATE TABLE "PACIENTES"
(
"NUMERO" VARCHAR(11) CHARACTER SET WIN1252 NOT NULL,
"NOME" VARCHAR(30) CHARACTER SET WIN1252,
"NASC" TIMESTAMP,
"SEXO" VARCHAR(1) CHARACTER SET WIN1252,
"MAE" VARCHAR(30) CHARACTER SET WIN1252,
"FONE" VARCHAR(12) CHARACTER SET WIN1252,
"EMPR" VARCHAR(6) CHARACTER SET WIN1252,
"PLANO" VARCHAR(4) CHARACTER SET WIN1252,
"CODCONV" VARCHAR(11) CHARACTER SET WIN1252,
CONSTRAINT "CHAVE_PACIENTE" PRIMARY KEY ("NUMERO")
);
/* Table: PLANOS, Owner: SYSDBA */
CREATE TABLE "PLANOS"
(
"CODIPLAN" VARCHAR(4) CHARACTER SET WIN1252 NOT NULL,
"DESPLAN" VARCHAR(30) CHARACTER SET WIN1252,
CONSTRAINT "CHAVE_PLAN" PRIMARY KEY ("CODIPLAN")
);
/* Table: UCCADPERM, Owner: SYSDBA */
CREATE TABLE "UCCADPERM"
(
"IDUSER" INTEGER,
"MODULO" VARCHAR(50) CHARACTER SET WIN1252,
"OBJNAME" VARCHAR(50) CHARACTER SET WIN1252
);
/* Table: UCCADPERMEX, Owner: SYSDBA */
CREATE TABLE "UCCADPERMEX"
(
"IDUSER" INTEGER,
"MODULO" VARCHAR(50) CHARACTER SET WIN1252,
"OBJNAME" VARCHAR(50) CHARACTER SET WIN1252,
"FORMNAME" VARCHAR(50) CHARACTER SET WIN1252
);
/* Table: UCCADUSER, Owner: SYSDBA */
CREATE TABLE "UCCADUSER"
(
"IDUSER" INTEGER,
"NOME" VARCHAR(30) CHARACTER SET WIN1252,
"LOGIN" VARCHAR(15) CHARACTER SET WIN1252,
"SENHA" VARCHAR(30) CHARACTER SET WIN1252,
"EMAIL" VARCHAR(100) CHARACTER SET WIN1252,
"PRIVILEGIADO" INTEGER,
"TIPO" CHAR(1) CHARACTER SET WIN1252,
"PERFIL" INTEGER
);
/* Table: UCLOG, Owner: SYSDBA */
CREATE TABLE "UCLOG"
(
"IDUSER" INTEGER,
"MSG" VARCHAR(250) CHARACTER SET WIN1252,
"DATA" VARCHAR(14) CHARACTER SET WIN1252,
"NIVEL" INTEGER
);
/* Index definitions for all user tables */
CREATE INDEX "AGENDA_AGENDAMENTO" ON "AGENDA"("COD_DENT", "CODEMP", "DATACONS", "COD_LOCAL", "ATENDIDO");
CREATE INDEX "AGENDA_ATENDIDO" ON "AGENDA"("ATENDIDO");
CREATE UNIQUE INDEX "AGENDA_CHAVE" ON "AGENDA"("COD_LOCAL", "COD_ESP", "COD_DENT", "DATACONS", "HORA");
CREATE INDEX "AGENDA_CRM" ON "AGENDA"("COD_DENT");
CREATE INDEX "AGENDA_DATA" ON "AGENDA"("DATACONS", "COD_LOCAL", "COD_ESP", "COD_DENT");
CREATE INDEX "AGENDA_HORA" ON "AGENDA"("COD_DENT", "CODEMP", "HORA");
CREATE INDEX "AGENDA_NOME" ON "AGENDA"("NOME");
CREATE INDEX "AGENDA_NUMERO" ON "AGENDA"("NUM");
CREATE INDEX "AGENDA_RETORNO" ON "AGENDA"("NUM", "COD_ESP", "DATACONS", "ATENDIDO");
CREATE INDEX "ATEND_ATEND" ON "ATENDIMENTOS_AGENDA"("COD_DENT", "COD_LOCAL", "DATACONS", "ATENDIDO");
CREATE INDEX "ATEND_BENEF" ON "ATENDIMENTOS_AGENDA"("NUM", "NOME");
CREATE INDEX "ATEND_CODEMP" ON "ATENDIMENTOS_AGENDA"("CODEMP", "DATACONS", "COD_LOCAL");
CREATE INDEX "ATEND_CRM" ON "ATENDIMENTOS_AGENDA"("COD_DENT", "DATACONS", "COD_LOCAL", "CONVENIO");
CREATE INDEX "ATEND_ESP" ON "ATENDIMENTOS_AGENDA"("COD_ESP");
CREATE INDEX "ATEND_RETORNO" ON "ATENDIMENTOS_AGENDA"("NUM", "COD_ESP", "DATACONS", "ATENDIDO");
CREATE UNIQUE INDEX "CHAVE_EMPR" ON "EMPRESAS"("CODEMPR");
CREATE INDEX "EMPR_NOME" ON "EMPRESAS"("NOMEMP");
CREATE UNIQUE INDEX "CHAVE_ESPE" ON "ESPE"("CODESP");
CREATE INDEX "ESP_NOME" ON "ESPE"("DESCESP");
CREATE INDEX "FALTAS_BENEF" ON "FALTAS_AGENDA"("NUM", "NOME");
CREATE INDEX "FALTAS_CODEMP" ON "FALTAS_AGENDA"("CODEMP");
CREATE INDEX "FALTAS_EMPRESAS" ON "FALTAS_AGENDA"("CODEMP");
CREATE UNIQUE INDEX "CHAVE_MED" ON "MEDICOS"("CRM");
CREATE INDEX "CHAVE_MEDNOME" ON "MEDICOS"("NOMED");
CREATE INDEX "EXMEDICOS_CRM" ON "MEDICOS_EXCECOES"("CRM");
CREATE INDEX "EXMEDICOS_DATAHORA" ON "MEDICOS_EXCECOES"("DATA", "HORARIO");
CREATE INDEX "CHAVE_EXTRAMEDICO" ON "MEDICOS_EXTRAS"("CRM", "COD_LOCAL", "ESPE", "DIA_DA_SEMANA");
CREATE INDEX "CHAVE_HORAMEDICO" ON "MEDICOS_HORARIOS"("CRM", "COD_LOCAL", "ESPE", "DIA_DA_SEMANA");
CREATE UNIQUE INDEX "CHAVE_PAC" ON "PACIENTES"("NUMERO");
CREATE INDEX "PAC_NOME" ON "PACIENTES"("NOME");
CREATE UNIQUE INDEX "CHAVE_PLANOS" ON "PLANOS"("CODIPLAN");
CREATE INDEX "PLANOS_NOME" ON "PLANOS"("DESPLAN");
COMMIT WORK;
SET AUTODDL OFF;
SET TERM ^ ;
/* Stored procedures */
CREATE PROCEDURE "AGENDAMENTO"
(
"DATA1" TIMESTAMP,
"LOCAL" VARCHAR(5) CHARACTER SET WIN1252,
"ATEND" VARCHAR(1) CHARACTER SET WIN1252
)
RETURNS
(
"COD_DENT" VARCHAR(8) CHARACTER SET WIN1252,
"COD_ESP" VARCHAR(4) CHARACTER SET WIN1252,
"DATACONS" TIMESTAMP,
"HORA" VARCHAR(5) CHARACTER SET WIN1252,
"COD_LOCAL" VARCHAR(5) CHARACTER SET WIN1252,
"CODPLAN" VARCHAR(5) CHARACTER SET WIN1252,
"CODEMP" VARCHAR(6) CHARACTER SET WIN1252,
"CONVENIO" VARCHAR(25) CHARACTER SET WIN1252,
"NUM" VARCHAR(20) CHARACTER SET WIN1252,
"NOME" VARCHAR(30) CHARACTER SET WIN1252,
"ATENDIDO" VARCHAR(1) CHARACTER SET WIN1252,
"AMB" VARCHAR(11) CHARACTER SET WIN1252,
"TELEFONE" VARCHAR(15) CHARACTER SET WIN1252,
"RETORNO" VARCHAR(1) CHARACTER SET WIN1252,
"QTDE" INTEGER,
"LOGIN" VARCHAR(15) CHARACTER SET WIN1252,
"TEMPO" INTEGER
)
AS
BEGIN EXIT; END ^
CREATE PROCEDURE "ATENDIMENTO"
(
"DATA1" TIMESTAMP,
"DATA2" TIMESTAMP,
"LOCAL" VARCHAR(5) CHARACTER SET WIN1252,
"ATEND" VARCHAR(1) CHARACTER SET WIN1252
)
RETURNS
(
"COD_DENT" VARCHAR(8) CHARACTER SET WIN1252,
"COD_ESP" VARCHAR(4) CHARACTER SET WIN1252,
"DATACONS" TIMESTAMP,
"HORA" VARCHAR(5) CHARACTER SET WIN1252,
"COD_LOCAL" VARCHAR(5) CHARACTER SET WIN1252,
"CODPLAN" VARCHAR(5) CHARACTER SET WIN1252,
"CODEMP" VARCHAR(6) CHARACTER SET WIN1252,
"CONVENIO" VARCHAR(25) CHARACTER SET WIN1252,
"NUM" VARCHAR(20) CHARACTER SET WIN1252,
"NOME" VARCHAR(30) CHARACTER SET WIN1252,
"ATENDIDO" VARCHAR(1) CHARACTER SET WIN1252,
"AMB" VARCHAR(11) CHARACTER SET WIN1252,
"TELEFONE" VARCHAR(15) CHARACTER SET WIN1252,
"RETORNO" VARCHAR(1) CHARACTER SET WIN1252,
"QTDE" INTEGER,
"LOGIN" VARCHAR(15) CHARACTER SET WIN1252,
"TEMPO" INTEGER
)
AS
BEGIN EXIT; END ^
CREATE PROCEDURE "FALTAS"
(
"DATA1" TIMESTAMP,
"DATA2" TIMESTAMP,
"LOCAL" VARCHAR(5) CHARACTER SET WIN1252,
"ATEND" VARCHAR(1) CHARACTER SET WIN1252
)
RETURNS
(
"COD_DENT" VARCHAR(8) CHARACTER SET WIN1252,
"COD_ESP" VARCHAR(4) CHARACTER SET WIN1252,
"DATACONS" TIMESTAMP,
"HORA" VARCHAR(5) CHARACTER SET WIN1252,
"COD_LOCAL" VARCHAR(5) CHARACTER SET WIN1252,
"CODPLAN" VARCHAR(5) CHARACTER SET WIN1252,
"CODEMP" VARCHAR(6) CHARACTER SET WIN1252,
"CONVENIO" VARCHAR(25) CHARACTER SET WIN1252,
"NUM" VARCHAR(20) CHARACTER SET WIN1252,
"NOME" VARCHAR(30) CHARACTER SET WIN1252,
"ATENDIDO" VARCHAR(1) CHARACTER SET WIN1252,
"AMB" VARCHAR(11) CHARACTER SET WIN1252,
"TELEFONE" VARCHAR(15) CHARACTER SET WIN1252,
"RETORNO" VARCHAR(1) CHARACTER SET WIN1252,
"QTDE" INTEGER,
"LOGIN" VARCHAR(15) CHARACTER SET WIN1252,
"TEMPO" INTEGER
)
AS
BEGIN EXIT; END ^
ALTER PROCEDURE "AGENDAMENTO"
(
"DATA1" TIMESTAMP,
"LOCAL" VARCHAR(5) CHARACTER SET WIN1252,
"ATEND" VARCHAR(1) CHARACTER SET WIN1252
)
RETURNS
(
"COD_DENT" VARCHAR(8) CHARACTER SET WIN1252,
"COD_ESP" VARCHAR(4) CHARACTER SET WIN1252,
"DATACONS" TIMESTAMP,
"HORA" VARCHAR(5) CHARACTER SET WIN1252,
"COD_LOCAL" VARCHAR(5) CHARACTER SET WIN1252,
"CODPLAN" VARCHAR(5) CHARACTER SET WIN1252,
"CODEMP" VARCHAR(6) CHARACTER SET WIN1252,
"CONVENIO" VARCHAR(25) CHARACTER SET WIN1252,
"NUM" VARCHAR(20) CHARACTER SET WIN1252,
"NOME" VARCHAR(30) CHARACTER SET WIN1252,
"ATENDIDO" VARCHAR(1) CHARACTER SET WIN1252,
"AMB" VARCHAR(11) CHARACTER SET WIN1252,
"TELEFONE" VARCHAR(15) CHARACTER SET WIN1252,
"RETORNO" VARCHAR(1) CHARACTER SET WIN1252,
"QTDE" INTEGER,
"LOGIN" VARCHAR(15) CHARACTER SET WIN1252,
"TEMPO" INTEGER
)
AS
BEGIN
FOR SELECT cod_dent,cod_esp,datacons,hora,cod_local,codplan,codemp,convenio,num,nome,atendido,amb,telefone,retorno,qtde,login,tempo FROM agenda
WHERE DATACONS = :data1 AND COD_LOCAL = :local AND Atendido= :atend INTO :cod_dent,:cod_esp,:datacons,:hora,:cod_local,:codplan,:codemp,:convenio,:num,:nome,:atendido,:amb,:telefone,:retorno,:qtde,:login,:tempo DO
SUSPEND;
END
^
ALTER PROCEDURE "ATENDIMENTO"
(
"DATA1" TIMESTAMP,
"DATA2" TIMESTAMP,
"LOCAL" VARCHAR(5) CHARACTER SET WIN1252,
"ATEND" VARCHAR(1) CHARACTER SET WIN1252
)
RETURNS
(
"COD_DENT" VARCHAR(8) CHARACTER SET WIN1252,
"COD_ESP" VARCHAR(4) CHARACTER SET WIN1252,
"DATACONS" TIMESTAMP,
"HORA" VARCHAR(5) CHARACTER SET WIN1252,
"COD_LOCAL" VARCHAR(5) CHARACTER SET WIN1252,
"CODPLAN" VARCHAR(5) CHARACTER SET WIN1252,
"CODEMP" VARCHAR(6) CHARACTER SET WIN1252,
"CONVENIO" VARCHAR(25) CHARACTER SET WIN1252,
"NUM" VARCHAR(20) CHARACTER SET WIN1252,
"NOME" VARCHAR(30) CHARACTER SET WIN1252,
"ATENDIDO" VARCHAR(1) CHARACTER SET WIN1252,
"AMB" VARCHAR(11) CHARACTER SET WIN1252,
"TELEFONE" VARCHAR(15) CHARACTER SET WIN1252,
"RETORNO" VARCHAR(1) CHARACTER SET WIN1252,
"QTDE" INTEGER,
"LOGIN" VARCHAR(15) CHARACTER SET WIN1252,
"TEMPO" INTEGER
)
AS
BEGIN
FOR SELECT cod_dent,cod_esp,datacons,hora,cod_local,codplan,codemp,convenio,num,nome,atendido,amb,telefone,retorno,qtde,login,tempo FROM atendimentos_agenda
WHERE DATACONS >= :data1 AND DATACONS<= :data2 AND COD_LOCAL = :local AND Atendido= :atend INTO :cod_dent,:cod_esp,:datacons,:hora,:cod_local,:codplan,:codemp,:convenio,:num,:nome,:atendido,:amb,:telefone,:retorno,:qtde,:login,:tempo DO
SUSPEND;
END
^
ALTER PROCEDURE "FALTAS"
(
"DATA1" TIMESTAMP,
"DATA2" TIMESTAMP,
"LOCAL" VARCHAR(5) CHARACTER SET WIN1252,
"ATEND" VARCHAR(1) CHARACTER SET WIN1252
)
RETURNS
(
"COD_DENT" VARCHAR(8) CHARACTER SET WIN1252,
"COD_ESP" VARCHAR(4) CHARACTER SET WIN1252,
"DATACONS" TIMESTAMP,
"HORA" VARCHAR(5) CHARACTER SET WIN1252,
"COD_LOCAL" VARCHAR(5) CHARACTER SET WIN1252,
"CODPLAN" VARCHAR(5) CHARACTER SET WIN1252,
"CODEMP" VARCHAR(6) CHARACTER SET WIN1252,
"CONVENIO" VARCHAR(25) CHARACTER SET WIN1252,
"NUM" VARCHAR(20) CHARACTER SET WIN1252,
"NOME" VARCHAR(30) CHARACTER SET WIN1252,
"ATENDIDO" VARCHAR(1) CHARACTER SET WIN1252,
"AMB" VARCHAR(11) CHARACTER SET WIN1252,
"TELEFONE" VARCHAR(15) CHARACTER SET WIN1252,
"RETORNO" VARCHAR(1) CHARACTER SET WIN1252,
"QTDE" INTEGER,
"LOGIN" VARCHAR(15) CHARACTER SET WIN1252,
"TEMPO" INTEGER
)
AS
BEGIN
FOR SELECT cod_dent,cod_esp,datacons,hora,cod_local,codplan,codemp,convenio,num,nome,atendido,amb,telefone,retorno,qtde,login,tempo FROM faltas_agenda
WHERE DATACONS >= :data1 AND DATACONS<= :data2 AND COD_LOCAL = :local AND Atendido= :atend INTO :cod_dent,:cod_esp,:datacons,:hora,:cod_local,:codplan,:codemp,:convenio,:num,:nome,:atendido,:amb,:telefone,:retorno,:qtde,:login,:tempo DO
SUSPEND;
END
^
SET TERM ; ^
COMMIT WORK;
SET AUTODDL ON;
/* Grant Roles for this database */
/* Grant permissions for this database */
Ok. Este banco de dados foi criado com o dialeto 3 e o charset WIN1252
Utilizo três SP criadas no banco para 3 relatórios distintos (agendamento,atendimento,faltas) e no Delphi uso um sqlQuery para dados_mestre e um sqlQuery para dados_detalhe(dbexpress,datasetprovider,clientdataset).
Observação: No Postgresql as SP tambem existem e o programa funciona.
Vou dar o exemplo com a SP agendamento. A qual tem 3 parâmetros:
- Data
- Código do Local
- Atendido (S ou N)
Então criei duas sqlQuery como descrito acima.
Nota: No Postrgresql cada query está sem o AGENDAMENTO.
Usei com o FB pois o delphi não põe o campo COD_DENT no fields editor.
Mestre: SELECT DISTINCT AGENDAMENTO.COD_DENT,MEDICOS.NOMED FROM AGENDAMENTO(´02/16/2005´,´TE´,´N´) INNER JOIN MEDICOS ON MEDICOS.CRM=AGENDAMENTO.COD_DENT ORDER BY MEDICOS.NOMED
Detalhe: SELECT DISTINCT AGENDAMENTO.COD_DENT,AGENDAMENTO.NOME,AGENDAMENTO.HORA,AGENDAMENTO.NUM,AGENDAMENTO.COD_ESP,AGENDAMENTO.TELEFONE,EMPRESAS.NOMEMP FROM AGENDAMENTO(´02/16/2005´,´TE´,´N´) INNER JOIN EMPRESAS ON AGENDAMENTO.CODEMP=EMPRESAS.CODEMPR ORDER BY AGENDAMENTO.HORA
Crio os ClientDatasets para cada sqlQuery e quando vou inserir os campos no fields editor:
´ARITHMETIC EXCEPTION, NUMERIC OVERFLOW, OR STRING TRUNCATION´
Estranho é que ao repetir a operação, consigo incluir os campos e até abrir o Dataset. Mas na execução do programa o erro persiste.
Quanto a conexão, ela é feita com o charset e o dialeto certos (creio eu).
No IBConsole ao executar cada query, funcionam direitinho.
Alguma ajuda?.
Danilozanaga
Curtidas 0
Respostas
Fsflorencio
16/02/2005
Este erro ´ARITHMETIC EXCEPTION, NUMERIC OVERFLOW, OR STRING TRUNCATION´ significa que você está tentando gravar uma informação grande demais para o tipo do campo.
Tente dar uma olhada neste sentido.
Tente dar uma olhada neste sentido.
GOSTEI 0
Danilozanaga
16/02/2005
Este erro ´ARITHMETIC EXCEPTION, NUMERIC OVERFLOW, OR STRING TRUNCATION´ significa que você está tentando gravar uma informação grande demais para o tipo do campo.
Tente dar uma olhada neste sentido.
Concordo, mas porque quando digito o comando SQL (mestre ou detalhe) no IBConsole (por exemplo), não me dá o mesmo erro?
GOSTEI 0
Danilozanaga
16/02/2005
A quem interessar:
Resolvi o problema. Abri um novo projeto e no form principal inseri os 5 componentes de dados para testar e mais um dbgrid
conexao,sqlquery,provider,clientdataset,dataset
E não é que funcionou? Ou seja, para os relatórios (ufa!) que estou fazendo, vou ter que criar componentes iguais (!) e deletar os antigos.
Resolvi o problema. Abri um novo projeto e no form principal inseri os 5 componentes de dados para testar e mais um dbgrid
conexao,sqlquery,provider,clientdataset,dataset
E não é que funcionou? Ou seja, para os relatórios (ufa!) que estou fazendo, vou ter que criar componentes iguais (!) e deletar os antigos.
GOSTEI 0
Fsflorencio
16/02/2005
Concordo, mas porque quando digito o comando SQL (mestre ou detalhe) no IBConsole (por exemplo), não me dá o mesmo erro?
Pq o erro não estava no script, o erro deveria estar nos fields da sua query.
A propriedade Size do Field deveria estar de um tamanho diferente.
Acredito que foi por isto que quando vc adicionou os componentes novamente deu tudo certo.
De vez em quando isto acontecia comigo. Eu alterava o tamanho do campo para maior e não atualizava as fontes fazendo com que ocorrece a mesma exceção.
GOSTEI 0
Daniel_wakeboarder
16/02/2005
Tenta assim: só assim resolvi este problema.
CREATE TABLE PRODUTOS (
CODIGO INTEGER NOT NULL,
CODPRODUTO VARCHAR (14) CHARACTER SET WIN1252 COLLATE WIN1252,
DESCRICAO VARCHAR (60) CHARACTER SET WIN1252 NOT NULL COLLATE WIN1252,
MODELO VARCHAR (20) CHARACTER SET WIN1252 COLLATE WIN1252,
FORNECEDOR INTEGER,
SALDO DOUBLE PRECISION,
PRECOCUSTO DOUBLE PRECISION,
PRECOVENDA DOUBLE PRECISION,
OBS BLOB sub_type 1 segment size 80,
DATA_ENTRADA DATE);
SET TERM ^ ;
CREATE TABLE PRODUTOS (
CODIGO INTEGER NOT NULL,
CODPRODUTO VARCHAR (14) CHARACTER SET WIN1252 COLLATE WIN1252,
DESCRICAO VARCHAR (60) CHARACTER SET WIN1252 NOT NULL COLLATE WIN1252,
MODELO VARCHAR (20) CHARACTER SET WIN1252 COLLATE WIN1252,
FORNECEDOR INTEGER,
SALDO DOUBLE PRECISION,
PRECOCUSTO DOUBLE PRECISION,
PRECOVENDA DOUBLE PRECISION,
OBS BLOB sub_type 1 segment size 80,
DATA_ENTRADA DATE);
SET TERM ^ ;
GOSTEI 0