Fórum Problemas na inclusao de dados #281060
11/05/2005
0
[b:872a37ffbb]Codigo da procedure[/b:872a37ffbb]
CREATE PROCEDURE MANUTENCAO_DE_EMPRESA (
I_CODIGO INTEGER,
I_RAZAO VARCHAR(40),
I_NOME_F VARCHAR(40),
I_ENDE VARCHAR(40),
I_BAIRRO VARCHAR(40),
I_CIDADE VARCHAR(40),
I_ESTADO VARCHAR(2),
I_CEP VARCHAR(9),
I_TEL1 VARCHAR(18),
I_TEL2 VARCHAR(18),
I_CNPJ VARCHAR(18),
I_INSC VARCHAR(18),
I_MAIL VARCHAR(100),
I_HOME VARCHAR(100),
I_PATH VARCHAR(100))
AS
BEGIN
UPDATE EMPRESAS SET EMPRESAS.RAZAO_SOCIAL = :I_RAZAO,
EMPRESAS.NOME_FANTASIA = :I_NOME_F,
EMPRESAS.ENDERECO = :I_ENDE,
EMPRESAS.BAIRRO = :I_BAIRRO,
EMPRESAS.CIDADE = :I_CIDADE,
EMPRESAS.ESTADO = :I_ESTADO,
EMPRESAS.CEP = :I_CEP,
EMPRESAS.TELEFONE1 = :I_TEL1,
EMPRESAS.TELEFONE2 = :I_TEL2,
EMPRESAS.CNPJ = :I_CNPJ,
EMPRESAS.INSC_EST = :I_INSC,
EMPRESAS.E_MAIL = :I_MAIL,
EMPRESAS.HOME_PAGE = :I_HOME,
EMPRESAS.PATH_IMAGEM = :I_PATH
WHERE EMPRESAS.CODIGO = :I_CODIGO;
END
[b:872a37ffbb]Codigo do procedimento da inclusao[/b:872a37ffbb]
begin
try
TransDesc.TransactionID:=1;
TransDesc.IsolationLevel:=xilREPEATABLEREAD;
DataModule1.SQLConn1.StartTransaction(TransDesc);
DataModule1.DataSetEmpresas.Close;
DataModule1.DataSetEmpresas.CommandType := ctStoredProc;
DataModule1.DataSetEmpresas.CommandText := ´MANUTENCAO_DE_EMPRESA´;
if Edit9.Text <> ´´ then
begin
DataModule1.DataSetEmpresas.ParamByName(´I_CODIGO´).AsInteger := StrToInt(Edit9.Text);
end;
if MaskEdit1.Text <> ´´ then
begin
DataModule1.DataSetEmpresas.ParamByName(´I_CNPJ´).AsString := MaskEdit1.Text;
end;
if Edit1.Text <> ´´ then
begin
DataModule1.DataSetEmpresas.ParamByName(´I_INSC´).AsString := Edit1.Text;
end;
if Edit2.Text <> ´´ then
begin
DataModule1.DataSetEmpresas.ParamByName(´I_NOME_F´).AsString := Edit2.Text;
end;
if Edit3.Text <> ´´ then
begin
DataModule1.DataSetEmpresas.ParamByName(´I_RAZAO´).AsString := Edit3.Text;
end;
if Edit4.Text <> ´´ then
begin
DataModule1.DataSetEmpresas.ParamByName(´I_ENDE´).AsString := Edit4.Text;
end;
if Edit5.Text <> ´´ then
begin
DataModule1.DataSetEmpresas.ParamByName(´I_BAIRRO´).AsString := Edit5.Text;
end;
if Edit6.Text <> ´´ then
begin
DataModule1.DataSetEmpresas.ParamByName(´I_CIDADE´).AsString := Edit6.Text;
end;
if ComboBox1.Text <> ´´ then
begin
DataModule1.DataSetEmpresas.ParamByName(´I_ESTADO´).AsString := ComboBox1.Text;
end;
if MaskEdit2.Text <> ´ - ´ then
begin
DataModule1.DataSetEmpresas.ParamByName(´I_CEP´).AsString := MaskEdit2.Text;
end;
if MaskEdit3.Text <> ´( ) - ´ then
begin
DataModule1.DataSetEmpresas.ParamByName(´I_TEL1´).AsString := MaskEdit3.Text;
end;
if MaskEdit4.Text <> ´( ) - ´ then
begin
DataModule1.DataSetEmpresas.ParamByName(´I_TEL2´).AsString := MaskEdit4.Text;
end;
if Edit7.Text <> ´´ then
begin
DataModule1.DataSetEmpresas.ParamByName(´I_MAIL´).AsString := Edit7.Text;
end;
if Edit8.Text <> ´´ then
begin
DataModule1.DataSetEmpresas.ParamByName(´I_HOME´).AsString := Edit8.Text;
end;
if Edit10.Text <> ´´ then
begin
DataModule1.DataSetEmpresas.ParamByName(´I_PATH´).AsString := Edit10.Text;
RenameFile(OpenPictureDialog1.FileName, DataModule1.DataSetParametros.FieldList.Fields[2].AsString+´\´+Edit9.text+´.jpg´);
end;
// DataModule1.DataSetEmpresas.ParamByName(´i_usu´).AsInteger := frmMenu.ClientDataSet1.Fields.Fields[0].AsInteger;
DataModule1.DataSetEmpresas.ExecSQL;
DataModule1.SQLConn1.Commit(TransDesc);
frmMenu.Desabilita(frmCadastro_Empresa);
frmMenu.LimpaCampos(frmCadastro_Empresa);
ComboBox1.ItemIndex := -1;
except
on Exc:Exception do
begin
ShowMessage(´Falha na tentativa de alterar os dados: ´+exc.Message);
MaskEdit1.SetFocus;
DataModule1.SQLConn1.Rollback(TransDesc);
end;
end;
end;
Ocorre um erro quando faço a alteração dos dados
[b:872a37ffbb]Erro[/b:872a37ffbb]
Fala na tentatica de alterar os dados: SQL Server Error: arithmetic exception, numeric overflow, or string truncation
Essa falha somente ocorre quando um determinado campo (supendo) possui 20 caracteres e eu informo que o MaxLength é 20, ai quando digito no campo e alcançou os 20 caracteres ai mesmo assim continuo tentando digitar no mesmo campo, quando vou executar os procedimentos acimas retorna o erro.
O que pode estar acontecendo???
Obrigado
CREATE PROCEDURE MANUTENCAO_DE_EMPRESA (
I_CODIGO INTEGER,
I_RAZAO VARCHAR(40),
I_NOME_F VARCHAR(40),
I_ENDE VARCHAR(40),
I_BAIRRO VARCHAR(40),
I_CIDADE VARCHAR(40),
I_ESTADO VARCHAR(2),
I_CEP VARCHAR(9),
I_TEL1 VARCHAR(18),
I_TEL2 VARCHAR(18),
I_CNPJ VARCHAR(18),
I_INSC VARCHAR(18),
I_MAIL VARCHAR(100),
I_HOME VARCHAR(100),
I_PATH VARCHAR(100))
AS
BEGIN
UPDATE EMPRESAS SET EMPRESAS.RAZAO_SOCIAL = :I_RAZAO,
EMPRESAS.NOME_FANTASIA = :I_NOME_F,
EMPRESAS.ENDERECO = :I_ENDE,
EMPRESAS.BAIRRO = :I_BAIRRO,
EMPRESAS.CIDADE = :I_CIDADE,
EMPRESAS.ESTADO = :I_ESTADO,
EMPRESAS.CEP = :I_CEP,
EMPRESAS.TELEFONE1 = :I_TEL1,
EMPRESAS.TELEFONE2 = :I_TEL2,
EMPRESAS.CNPJ = :I_CNPJ,
EMPRESAS.INSC_EST = :I_INSC,
EMPRESAS.E_MAIL = :I_MAIL,
EMPRESAS.HOME_PAGE = :I_HOME,
EMPRESAS.PATH_IMAGEM = :I_PATH
WHERE EMPRESAS.CODIGO = :I_CODIGO;
END
[b:872a37ffbb]Codigo do procedimento da inclusao[/b:872a37ffbb]
begin
try
TransDesc.TransactionID:=1;
TransDesc.IsolationLevel:=xilREPEATABLEREAD;
DataModule1.SQLConn1.StartTransaction(TransDesc);
DataModule1.DataSetEmpresas.Close;
DataModule1.DataSetEmpresas.CommandType := ctStoredProc;
DataModule1.DataSetEmpresas.CommandText := ´MANUTENCAO_DE_EMPRESA´;
if Edit9.Text <> ´´ then
begin
DataModule1.DataSetEmpresas.ParamByName(´I_CODIGO´).AsInteger := StrToInt(Edit9.Text);
end;
if MaskEdit1.Text <> ´´ then
begin
DataModule1.DataSetEmpresas.ParamByName(´I_CNPJ´).AsString := MaskEdit1.Text;
end;
if Edit1.Text <> ´´ then
begin
DataModule1.DataSetEmpresas.ParamByName(´I_INSC´).AsString := Edit1.Text;
end;
if Edit2.Text <> ´´ then
begin
DataModule1.DataSetEmpresas.ParamByName(´I_NOME_F´).AsString := Edit2.Text;
end;
if Edit3.Text <> ´´ then
begin
DataModule1.DataSetEmpresas.ParamByName(´I_RAZAO´).AsString := Edit3.Text;
end;
if Edit4.Text <> ´´ then
begin
DataModule1.DataSetEmpresas.ParamByName(´I_ENDE´).AsString := Edit4.Text;
end;
if Edit5.Text <> ´´ then
begin
DataModule1.DataSetEmpresas.ParamByName(´I_BAIRRO´).AsString := Edit5.Text;
end;
if Edit6.Text <> ´´ then
begin
DataModule1.DataSetEmpresas.ParamByName(´I_CIDADE´).AsString := Edit6.Text;
end;
if ComboBox1.Text <> ´´ then
begin
DataModule1.DataSetEmpresas.ParamByName(´I_ESTADO´).AsString := ComboBox1.Text;
end;
if MaskEdit2.Text <> ´ - ´ then
begin
DataModule1.DataSetEmpresas.ParamByName(´I_CEP´).AsString := MaskEdit2.Text;
end;
if MaskEdit3.Text <> ´( ) - ´ then
begin
DataModule1.DataSetEmpresas.ParamByName(´I_TEL1´).AsString := MaskEdit3.Text;
end;
if MaskEdit4.Text <> ´( ) - ´ then
begin
DataModule1.DataSetEmpresas.ParamByName(´I_TEL2´).AsString := MaskEdit4.Text;
end;
if Edit7.Text <> ´´ then
begin
DataModule1.DataSetEmpresas.ParamByName(´I_MAIL´).AsString := Edit7.Text;
end;
if Edit8.Text <> ´´ then
begin
DataModule1.DataSetEmpresas.ParamByName(´I_HOME´).AsString := Edit8.Text;
end;
if Edit10.Text <> ´´ then
begin
DataModule1.DataSetEmpresas.ParamByName(´I_PATH´).AsString := Edit10.Text;
RenameFile(OpenPictureDialog1.FileName, DataModule1.DataSetParametros.FieldList.Fields[2].AsString+´\´+Edit9.text+´.jpg´);
end;
// DataModule1.DataSetEmpresas.ParamByName(´i_usu´).AsInteger := frmMenu.ClientDataSet1.Fields.Fields[0].AsInteger;
DataModule1.DataSetEmpresas.ExecSQL;
DataModule1.SQLConn1.Commit(TransDesc);
frmMenu.Desabilita(frmCadastro_Empresa);
frmMenu.LimpaCampos(frmCadastro_Empresa);
ComboBox1.ItemIndex := -1;
except
on Exc:Exception do
begin
ShowMessage(´Falha na tentativa de alterar os dados: ´+exc.Message);
MaskEdit1.SetFocus;
DataModule1.SQLConn1.Rollback(TransDesc);
end;
end;
end;
Ocorre um erro quando faço a alteração dos dados
[b:872a37ffbb]Erro[/b:872a37ffbb]
Fala na tentatica de alterar os dados: SQL Server Error: arithmetic exception, numeric overflow, or string truncation
Essa falha somente ocorre quando um determinado campo (supendo) possui 20 caracteres e eu informo que o MaxLength é 20, ai quando digito no campo e alcançou os 20 caracteres ai mesmo assim continuo tentando digitar no mesmo campo, quando vou executar os procedimentos acimas retorna o erro.
O que pode estar acontecendo???
Obrigado
Uiliangurjon
Curtir tópico
+ 0
Responder
Posts
20/03/2007
Matrixnix
Meu jovem,
já tive diversos problemas e consegui resolvendo isso no banco de dados, fiz da seguinte forma, mudei no charset de todos os campos VARCHAR meu, para o tipo WIN1252, ficou entao o charset e collate com o tipo WIN1252 ao invés de NONE como default.
Espero q tenha dado certo.
Atenciosamente
matrixnix
já tive diversos problemas e consegui resolvendo isso no banco de dados, fiz da seguinte forma, mudei no charset de todos os campos VARCHAR meu, para o tipo WIN1252, ficou entao o charset e collate com o tipo WIN1252 ao invés de NONE como default.
Espero q tenha dado certo.
Atenciosamente
matrixnix
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)