Problema com famoso erro: Arithmetic exception...

Firebird

16/02/2005

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:

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

Danilozanaga

Curtidas 0

Respostas

Fsflorencio

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.


GOSTEI 0
Danilozanaga

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

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.


GOSTEI 0
Fsflorencio

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

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 ^ ;


GOSTEI 0
POSTAR