07 Out 2015 17:23
Se o conteúdo de uma coluna é null e você quer que ele deixe de ser null, é só atribuir um valor para ele, o que você já está fazendo.Poka escreveu:É para deixar o campo codcli como not null ( flag = 1)
SET nome_da_coluna = NULL
WHERE nome_da_coluna IS NULL OR nome_da_coluna_1 IS NOT NULL
07 Out 2015 21:59
alter table dadopro add PRIMARY KEY ( codcli)
Error HY000 - [ODBC Firebird Driver][Firebird]unsuccessful metadata update
Column: CODCLI not defined as NOT NULL - cannot be used in PRIMARY KEY constraint definition
08 Out 2015 01:51
ALTER TABLE dadopro ADD CONSTRAINT PK_dadopro PRIMARY KEY(codcli);
ALTER TABLE dadopro ADD tmp_codcli BIGINT NOT NULL;
COMMIT;
UPDATE dadopro SET tmp_codcli = codcli
ALTER TABLE dadopro ALTER tmp_codcli POSITION 1;
ALTER TABLE dadopro ADD CONSTRAINT PK_dadopro PRIMARY KEY(tmp_codcli);
ALTER TABLE dadopro drop codcli;
ALTER TABLE dadopro alter tmp_codcli to codcli;
SELECT * INTO dadopro_bkp FROM dadoopro;
01 Nov 2015 17:05
01 Nov 2015 17:16
SELECT * FROM ESTMOV WHERE CODIGO=10 AND DATA='2015-11-01' ORDER BY LANCTO DESC LIMIT 1
SELECT TOP 1 * FROM ESTMOV WHERE CODIGO=10 AND DATA='2015-11-01' ORDER BY LANCTO DESC
02 Nov 2015 11:40
02 Nov 2015 16:00
02 Nov 2015 17:00
02 Nov 2015 23:30
SELECT *
FROM MovEst
WHERE codigo = 10
AND data = (SELECT MAX(data)
FROM MovEst
WHERE codigo = 10
AND Cast(data as Date) <= Cast( '2015-10-15' as Date ) )
04 Nov 2015 07:35
func fSaldo(xcodigo,xdata)
/*
fb_executa sempre me retorna a matriz m_select com as linhas recuperadas
-nControl é o campo de controle que tem 17 digitos, uso uma funcao do firebird
que me retorna ano,mes,dia,hora,minuto,segundo e fracao de segundo, assim nunca se repete
formação de nControl AAAAMMDDHHMMSSFFF
- fb_data retorna a data no formato correto para teste com o firebird
*/
local vsaldo:=0
//
str:="select first 1 e.qtdSldAt from fichaEst e where e.codprod = "+ xcodigo;
+" and e.data = '"+fb_data(xdata) +"' order by e.data , nControl desc ;"
//
fb_executa()
if empty(m_select)
// se nao encontrar procuro o saldo anterior
// pego a data anterior , aqui preciso da data anterior , nem sempre a data anterior é o dia anterior
str:="select first 1 e.data from fichaEst e where e.codprod = "+ xcodigo ;
+" and e.data < '"+fb_data(xdata) +"' order by e.data desc ;"
fb_executa()
// se m_select retornar vazio, não tem nenhum lancamento anterior
if empty( len(m_select) )
vsaldo:=0
else
// pesquiso a data anteriror
xdata:=m_select[1,1]
str:="select first 1 e.qtdSldAt from fichaEst e where e.codprod = "+ xcodigo;
+" and e.data = '"+fb_data(xdata) +"' order by e.data , nControl desc ;"
fb_executa()
vsaldo:=( m_select[1,1])
endif
else
vsaldo:=( m_select[1,1])
endif
retu vsaldo
04 Nov 2015 09:38
04 Nov 2015 12:21
06 Nov 2015 11:06
06 Nov 2015 11:19
06 Nov 2015 13:42
for a:= 1 to len(mx)
msaldo[a]:=fsaldoPa( mx[a,1] ,servData)
next
FUNC FSALDOPA(XCODIGO,XDATA)
// RETORNA O SALDO DA DATA
// fb_executa() retorna o resultado na matriz m_select
LOCAL VSALDO:=0
//
str:="select first 1 e.qtdSldAt from fichapaCI e where e.codprod = "+ xcodigo;
+" and e.data = '"+fb_data(xdata) +"' order by e.data, e.fb_control desc ;"
x:=fb_executa()
*--------------
if empty(m_select)
// se nao encontrar procuro o saldo anterior
// pego a data anterior
str:="select first 1 e.data from fichapaCI e where e.codprod = "+ xcodigo ;
+" and e.data < '"+fb_data(xdata) +"' order by e.data desc ;"
x:=fb_executa()
if empty( len(m_select) )
vsaldo:=0 // nao tem lancamento anterior
else
xdata:=m_select[1,1]
str:="select first 1 e.qtdSldAt from fichapaCI e where e.codprod = "+ xcodigo ;
+" and e.data = '"+fb_data(xdata) +"' order by e.data , fb_control desc ;"
x:=fb_executa()
vsaldo:=( m_select[1,1])
endif
else
vsaldo:=( m_select[1,1])
endif
*--------------
retu vsaldo