SQLite3 - Ajuda

Forum sobre SQL.

Moderador: Moderadores

leandrolinauer
Usuário Nível 3
Usuário Nível 3
Mensagens: 413
Registrado em: 16 Out 2006 10:59
Localização: Paranaíba-MS

SQLite3 - Ajuda

Mensagem por leandrolinauer »

Boa tarde.

Necessito de uma ajuda para entender o processo SQL.

Tenho duas tabelas abaixo:
:TABELA BR_PREVENDA
CREATE TABLE [BR_PREVENDA] (
[NUMPREVENDA] INTEGER NOT NULL,
[DATA_CAD] DATE NULL,
[DATA_EMISSAO] DATE NULL,
[VENDEDOR] VARCHAR(20) NULL,
[PLANO] VARCHAR(4) NULL,
[ID_CLIENTE] VARCHAR(20) NULL,
[NUMLOJA] VARCHAR(10) NOT NULL,
[CANCELADO] VARCHAR(1) NULL,
[N_CUPOM] INTEGER NULL,
[SERIAL] VARCHAR(60) NULL,
[CONTRZ] INTEGER NULL,
[CPF_CNPJ] VARCHAR(20) NULL,
[ENDERECO] VARCHAR(80) NULL,
[NOME] VARCHAR(70) NULL,
[BAIRRO] VARCHAR(50) NULL,
[CIDADE] VARCHAR(50) NULL,
[CEP] VARCHAR(15) NULL,
[UF] VARCHAR(2) NULL,
[FONE1] VARCHAR(25) NULL,
[FONE2] VARCHAR(25) NULL,
[EMAIL] VARCHAR(100) NULL,
[DESCONTO] NUMERIC(18,3) NULL,
[ACRESCIMO] NUMERIC(18,3) NULL,
[FLAG_LIBERADO] VARCHAR(1) NULL,
[USUARIO_LIB] VARCHAR(50) NULL,
[DTHORA_LIB] TIMESTAMP NULL,
[TIPO] VARCHAR(1) NOT NULL,
[SERIALPV] VARCHAR(30) NULL,
[FLAG_ACEITO] VARCHAR(3) NULL,
[FLAG_SIS] VARCHAR(1) NULL,
PRIMARY KEY ([NUMPREVENDA],[TIPO])
)
e tabela BR_PREVENDA_DETALHE
CREATE TABLE [BR_PREVENDA_DETALHE] (
[NUMPREVENDA] INTEGER NOT NULL,
[LOJA] VARCHAR(10) NOT NULL,
[COD_PRODUTO] VARCHAR(20) NOT NULL,
[QTD] NUMERIC(18,4) NULL,
[UN] VARCHAR(3) NULL,
[VALOR] NUMERIC(18,3) NULL,
[DESCONTO] NUMERIC(18,3) NULL,
[ACRESCIMO] NUMERIC(18,3) NULL,
[TOTAL] NUMERIC(18,3) NULL,
[CANCELADO] VARCHAR(1) NULL,
[N_CUPOM] INTEGER NULL,
[SERIAL] VARCHAR(60) NULL,
[COD_GRADE] VARCHAR(20) NULL,
[ITEM] INTEGER NOT NULL,
[COD_KIT] VARCHAR(20) NULL,
[COD_VENDEDOR] VARCHAR(20) NULL,
[DESC_PRODUTO] VARCHAR(100) NULL,
[ALIQUOTA] VARCHAR(10) NULL,
[SERVICO] VARCHAR(1) NULL,
[SERIALPRODUTO] VARCHAR(100) NULL,
[TIPO] VARCHAR(1) NOT NULL,
[COD_PROD_TCSMART] VARCHAR(30) NULL,
[TIPO_BLOQUEADO] VARCHAR(1) NULL,
[FLAG_SIS] VARCHAR(1) NULL,
[FLAG_ACEITO] VARCHAR(3) NULL,
PRIMARY KEY ([NUMPREVENDA],[COD_PRODUTO],[ITEM],[TIPO])
)
Preciso inserir dados nas duas, para teste enviei o comando SQL abaixo para gravar apenas na TABELA BR_PREVENDA para início e esta retornando erro do SQL.

Código: Selecionar todos

c_SQL:="INSERT INTO BR_PREVENDA (NUMPREVENDA, TIPO) VALUES( $d_SQL_PV , 'P' )" // apenas os campos NUMPREVENDA e TIPO
m_SQL:=cErrorMsg(sqlite3_exec(b_SQL,c_SQL)) //EXECUTO COMANDO
Após enviado os dados acima, retorna o seguinte erro do SQL.
SQLite_CONSTRAINT

Estou com dúvida porque não grava, estive lendo sobre CONSTRAINT e pelo que entendi é para não permitir que seja gravado dados incorretos, mas o valor que passo é exatamente o valor correto um numero por exemplo 15, inteiro.

Eu fiquei em dúvida se é por falta de enviar dados para os demais campos, ou realmente esta faltando algum comando para tratar a gravação de dados.

Fico grato pela colaboração.
Um Harbraço a todos.
:D
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

SQLite3 - Ajuda

Mensagem por alxsts »

Olá!.

Estas constraints servem para o controle da integridade referencial dos dados. Na prática, mostram que entidade (tabela) referencia outra.

Não sei se o script de criação de tabelas que você postou está completo. Em todo caso, verifique se existe alguma cláusula REFERENCES (verifique na tabela de clientes também).

Tente colocar o valor para a coluna id_cliente da tabela BR_PREVENDA. Provavelmente, a integridade do banco deve exigir que para emitir uma pre-venda, o cliente esteja cadastrado.
[]´s
Alexandre Santos (AlxSts)
MARCELOG
Usuário Nível 4
Usuário Nível 4
Mensagens: 546
Registrado em: 15 Mar 2005 16:54
Localização: Divinópolis/MG

SQLite3 - Ajuda

Mensagem por MARCELOG »

Olá companheiro,
ao que parece, o erro está na variável numérica d_SQL_PV com macro.
Então tente o seguinte:

"INSERT INTO BR_PREVENDA (NUMPREVENDA, TIPO) VALUES(" +ALLTRIM(STR($d_SQL_PV))+" , 'P' )"

ou entre aspas

"INSERT INTO BR_PREVENDA (NUMPREVENDA, TIPO) VALUES('" +ALLTRIM(STR($d_SQL_PV))+"' , 'P' )"

Atenciosamente.

MarceloG

Ps: Há outros campos "NOT NULL" que devem ser informados para validade e execução da instrução sql pretendida.
Água mole em pedra dura tanto bate que até espirra!
leandrolinauer
Usuário Nível 3
Usuário Nível 3
Mensagens: 413
Registrado em: 16 Out 2006 10:59
Localização: Paranaíba-MS

SQLite3 - Ajuda

Mensagem por leandrolinauer »

Boa tarde, desculpem a demora é que não vi esta resposta mas já resolvi no mesmo dia o erro passando da forma abaixo e funcionando até hoje.

Código: Selecionar todos

   	c_SQL:="INSERT INTO BR_PREVENDA (NUMPREVENDA, ID_CLIENTE, NUMLOJA, TIPO, CANCELADO, CPF_CNPJ, ENDERECO, NOME, BAIRRO, CIDADE, CEP, UF, DESCONTO, ACRESCIMO, FLAG_LIBERADO, USUARIO_LIB, SERIALPV, FLAG_ACEITO, FLAG_SIS, DATA_CAD, DTHORA_LIB) VALUES("+d_SQL_PV+",'"+wCod+"','"+oPAF_LJ+"','P','N','"+wCPF+"','"+wEndClie+"','"+wNome+"','"+wBairro+"','"+wCidade+"','"+wCep+"','"+wUf+"',0,0,'S','ADMIN','"+oPAF_SPV+"','BR*','S',DATE('NOW'),DATETIME('NOW'))"

Grato pela ajuda e novamente me perdoem por não ter respondido no mesmo dia.
:)Pos
Harbour 3.2 + GtWVW + QT + SQLite3 + DBF + SQL (Firebird)
Responder