Página 1 de 1

SQLite3 - Ajuda

Enviado: 17 Jan 2012 17:55
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

SQLite3 - Ajuda

Enviado: 17 Jan 2012 19:50
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.

SQLite3 - Ajuda

Enviado: 19 Jan 2012 13:30
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.

SQLite3 - Ajuda

Enviado: 09 Abr 2015 16:31
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