Clipper On Line • Ver Tópico - SQLite3 - Ajuda

SQLite3 - Ajuda

Discussão sobre SQL

Moderador: Moderadores

 

SQLite3 - Ajuda

Mensagempor leandrolinauer » 17 Jan 2012 16:55

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_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)
leandrolinauer
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 373
Data de registro: 16 Out 2006 10:59
Cidade/Estado: Paranaíba-MS
Curtiu: 0 vez
Mens.Curtidas: 12 vezes

SQLite3 - Ajuda

Mensagempor alxsts » 17 Jan 2012 18:50

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)
alxsts
Colaborador

Colaborador
 
Mensagens: 2943
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

SQLite3 - Ajuda

Mensagempor MARCELOG » 19 Jan 2012 12:30

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!
Avatar de usuário

MARCELOG
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 546
Data de registro: 15 Mar 2005 16:54
Cidade/Estado: Divinópolis/MG
Curtiu: 0 vez
Mens.Curtidas: 6 vezes

SQLite3 - Ajuda

Mensagempor leandrolinauer » 09 Abr 2015 16:31

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_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)
leandrolinauer
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 373
Data de registro: 16 Out 2006 10:59
Cidade/Estado: Paranaíba-MS
Curtiu: 0 vez
Mens.Curtidas: 12 vezes




Retornar para SQL

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 9 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro