Usuário com melhor resposta
como faz p/ testar uma imagem vazia?

Pergunta
-
tenho uma procedure e preciso testar se não esta recebendo um campo vazio p/ não dar erro. segue a procedure:
LTER PROCEDURE up_UpdateDadosPrefeitura (
@id as int,
@nome nvarchar(100),
@endereco nvarchar(100),
@numero nvarchar(10),
@municipio nvarchar(50),
@bairro nvarchar(50),
@estado nvarchar(50),
@iss nvarchar(10),
@img image
)
ASbegin
if (@img is null) ' fora null qual outra jeito de testar???
update dm_DadosPrefeituraIss set
Prefeitura = @nome,
Endereco = @endereco,
Numero = @numero,
Bairro = @bairro,
Municipio = @municipio,
Estado = @estado,
stCompensaIss = @iss
where idPrefeitura = @id
else
update dm_DadosPrefeituraIss set
Prefeitura = @nome,
Endereco = @endereco,
Numero = @numero,
Bairro = @bairro,
Municipio = @municipio,
Estado = @estado,
stCompensaIss = @iss,
ObjLogomarcaPrefeitura = @img
where idPrefeitura = @idend
GO
Respostas
-
Lissandra,
Provavelmente vc deve estar usando o controle file e se vc fizer assim File1.PostedFile.ContentLength / 1024 e vc vai ter o valor em KB e se esse valor for maior que o valor máximo vc dar uma mensagem.
Onde esta File1 vc coloca o id do seu controle.
Espero ter ajudado,
[]'s
Todas as Respostas
-
Lissandra,
@id as int,
@nome nvarchar(100),
@endereco nvarchar(100),
@numero nvarchar(10),
@municipio nvarchar(50),
@bairro nvarchar(50),
@estado nvarchar(50),
@iss nvarchar(10),
@img image = null
AS
IF @img IS NULL
BEGIN
RAISERROR('Faltam informações....', 11, 1)
RETURN
END
Assim o valor pode vir nulo mais vc gera uma exceção quando ele for nulo e nao continua a execucao da procedure.
Espero ter ajudado,
[]'s -
-
Olá Lissandra!
Penso que o mais recomendado é verificar a integridade dos dados antes de enviar para a stored procedure.
Já pensou se no futuro for necessário mudar as propriedades de uma variável? Dessa forma você terá que mudar a stored procedure também.
Utilize uma stored procedure somente para interagir com o banco de dados.
Espero ter ajudado!
-
-
Lissandra,
Você pode simplesmente tirar o if que eu coloquei na sua proc pq ai ele nao vai validar e vai aceitar o parametro null pq eu coloquei la
@img = null
E na sua camada de acesso a dados vc simplesmente valida, assim:
if(imagem != null)
entao vc passa a imagem para o seu SQLParameters
else
vc passa para o seu SQLParameters DBNnull.Value;
Espero ter ajudado,
[]'s -
Olá Diego,
assim também não vai servir, pois vai substituir o valor da imagem armazenado no banco por um valor null, e não é isso que eu quero, queria simplesmente tratar o update, p/ caso a pessoa não selecione uma nova imagem, não mexa naquela que esta la armazenada no banco.
-
Lissandra,
Vc so precisa na sua proc tratar isso, testando se o valor do parametro imagem for null entao vc nao atualiza ele caso contrario vc atualiza, se bem q normalmente quando temos telas de alterar todos dados são exibidos inclusive a imagem e ai qdo vc for passar vc ja passa ela e quando nao passar nada é pq o usuário nao quer imagem.
Fica a dica.
[]'s -
Certo Diego e se em um primeiro momento eu não tiver a imagem armazenada no banco? como eu faço p/ não dar erro quando estou pegando todos os dados do banco?
tipo p/ exibir os dados na tela estou fazendo uma rotina que le os dados atraves de um data reader e coloco num arraylist:
como eu faço p/ testar se a imagem ta vindo vazia e não carrega-la?
Public
Function GetPrefeitura() As IList Dim dr As SqlClient.SqlDataReaderdr = ObjPrefeituraDao.ListSqlDataReader
' Dim arr As New ArrayList While dr.Readobj =
New PrefeituraValueobj.idprefeitura = dr.Item(
"idPrefeitura")obj.nomePrefeitura = dr.Item(
"Prefeitura")obj.enderecoPrefeitura = dr.Item(
"Endereco")obj.numPrefeitura = dr.Item(
"Numero")obj.bairroPrefeitura = dr.Item(
"Bairro")obj.municipioPrefeitura = dr.Item(
"Municipio")obj.estadoPrefeitura = dr.Item(
"Estado")obj.issPrefeitura = dr.Item(
"stCompensaIss")obj.logoPrefeitura = dr.Item(
"objLogoMarcaPrefeitura")arr.Add(obj)
End While Return arr End Function -
Lissandra,
O próprio DataReader tem um método que testa o valor de uma coluna, assim:
dr.IsDBNull(index da coluna)//esse método só recebe o index da coluna e não o seu nome.
Esse método retorna se a coluna x tem ou não valor.
Espero ter ajudado,
[]'s -
-
-
Oi Diego, ja resolvi este problema e agora como eu faço para não deixar que cadastrem uma imagem maior do que a que deveria ser cadastrada? pois a imagem que eu vou usar vai ser tipo um logo do sistema, deve ter em torno de 5,20 kb(estou me baseando na que estou usando de teste, pois ela esta no tamanho exato que eu preciso).
-
Lissandra,
Provavelmente vc deve estar usando o controle file e se vc fizer assim File1.PostedFile.ContentLength / 1024 e vc vai ter o valor em KB e se esse valor for maior que o valor máximo vc dar uma mensagem.
Onde esta File1 vc coloca o id do seu controle.
Espero ter ajudado,
[]'s