Nos deparamos aqui com um problema de não conseguir editar os membros calculados de um cubo depois de instalar o Source Safe. Meu colega Ricardo Ramos conseguiu achar uma solução:
Analysis Services - Error Calculations
Unexpected error ocurred:
This error is caused because an installation of the Office 2007 overwrites two particular files that are used by SSAS 2005:
- msmdlocal.dll
- msmgdsrv.dll
So the solution is to copy this two files from:
%programfiles%\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies\
to:
%programfiles%\Common Files\System\Ole DB\
Só jogar esses arquivos na pasta citada e boa!
domingo, 14 de setembro de 2008
quinta-feira, 11 de setembro de 2008
Insert into
Um código simples e interessante para inserir somente registros únicos a partir de uma outra tabela de-para que é usada para comparar se o registro já foi inserido:
INSERT INTO TBDPPECA
(ID_PECA, CODFABRICANTE, NUM_MOL, DTPROCESSAMENTO)
(SELECT ID_PECA, NUM_CODFABRICANTE, NUM_MOL,CONVERT(VARCHAR(10), GETDATE(), 120) + ' 00:00:00'
FROM DIMPECA
WHERE ID_PECA >
CASE
WHEN (SELECT MAX(ID_PECA) FROM TBDPPECA) IS NULL THEN 0
ELSE (SELECT MAX(ID_PECA) FROM TBDPPECA)
END
)
Mais um update from:
UPDATE tbprod SET
ind_cestabasica = 'S'
FROM
tbcestabasica cb, tbprod p
where
cb.num_prod = p.num_prod
INSERT INTO TBDPPECA
(ID_PECA, CODFABRICANTE, NUM_MOL, DTPROCESSAMENTO)
(SELECT ID_PECA, NUM_CODFABRICANTE, NUM_MOL,CONVERT(VARCHAR(10), GETDATE(), 120) + ' 00:00:00'
FROM DIMPECA
WHERE ID_PECA >
CASE
WHEN (SELECT MAX(ID_PECA) FROM TBDPPECA) IS NULL THEN 0
ELSE (SELECT MAX(ID_PECA) FROM TBDPPECA)
END
)
Mais um update from:
UPDATE tbprod SET
ind_cestabasica = 'S'
FROM
tbcestabasica cb, tbprod p
where
cb.num_prod = p.num_prod
Lendo caracteres de uma string simulando um split com T-Sql
Este código simula um split, mas para um caso específico que eu enfrentei, onde precisava quebrar uma string em várias, mas sabia que sempre seria preenchida desta forma: '97 98 99 00'. Precisava pegar os dois caracteres quebrando pelo espaço.
Dá pra fazer isso mais dinamicamente, usando CharIndex por exemplo, fica ao gosto do freguês:
/*
Simulando Split
*/
print 'Segunda versão'
declare @stPos int
declare @size int
declare @var varchar(100)
set @var = '97 98 99 00'
set @size = len(@var)
set @stPos = 1
while @size > 0
begin
print substring(@var, @stPos, 2)
set @stPos = @stPos + 3
set @size = @size - 3
end
Dá pra fazer isso mais dinamicamente, usando CharIndex por exemplo, fica ao gosto do freguês:
/*
Simulando Split
*/
print 'Segunda versão'
declare @stPos int
declare @size int
declare @var varchar(100)
set @var = '97 98 99 00'
set @size = len(@var)
set @stPos = 1
while @size > 0
begin
print substring(@var, @stPos, 2)
set @stPos = @stPos + 3
set @size = @size - 3
end
terça-feira, 9 de setembro de 2008
Usando GetDate() para retornar somente a data
SELECT CAST(CONVERT(VARCHAR(10), GETDATE(), 120) AS SMALLDATETIME)
Melhor que usar concatenação:
select CONVERT(VARCHAR(10), GetDate(), 120) + ' 00:00:00'
Verificando o código para configuração da data.
Assinar:
Postagens (Atom)