Inquiridor
Stored procedures no Access

Pergunta
-
Olá pessoal,
Estou me baseando neste artigo http://www.devcity.net/Articles/18/msaccess_sp.aspxpara criar stored procedures no Access.
Está funcionando direitinho, desde que as instruções sejam básicas. No SQL tenho a seguinte procedure para listar registros com ou sem parâmetros:CREATE PROCEDURE spListarStatusChamados @parametro int = null
AS
SELECT * FROM TStatusChamadosWHERE campo = isnull(@parametro,campo)
ORDER BY IdStatusChamado
No SQL funciona, porém quando tento criá-la no Access dá erro. Alguém tem idéia de como fazer a mesma instrução no Access?
Obrigada.
Todas as Respostas
-
-
Então Rick, também concordo que o ideal seria usar SQL, mas o cliente vai hospedar na Locaweb e ele tem um plano de hospedagem básica que não dá direito a SQL, ele não quer mudar de plano, pagar mais, etc. É por isso que estou tentando fazer isso funcionar com Access, mas pelo que percebi até agora, acho que não vou poder usar procedures.
Obrigada! -
-
Essa e nova para mim, nao sabia mesmo que store procedure e possivel no access, entao vamos la pelo que eu li no arqitigo vc. deve criar os parametros com os tipos de dados do access e sem @ mesmo.
Obrigado pois aprendi mais uma, vivendo e aprendendo.
Abs.;
-
-
-
-
Junior,
Versão 2.7 ou superior...
http://msdn2.microsoft.com/en-us/library/k10148y1(VS.80).aspx
Pra quem tem Windows XP ou 2003 já funciona... Pro 2000 tem que atualizar.
Abraço
-
Então pessoal, tirando a @ consigo criar as SPs, porém elas não funcionam corretamente. Pelo que deu pra perceber até agora, se a SP for simples, tudo bem, mas se for um poquinho mais complexa não dá muito certo.
No meu caso acho que não poderei usar.
Obrigada a todos. -
-
Olá, testei com Select, Insert, Update e Delete e funcionou. Ex.:
"CREATE PROC spListarStatusChamados AS SELECT * FROM TStatusChamados;"
"CREATE PROC spExcluirStatusChamados(IdStatusChamado LONG) AS DELETE FROM TStatusChamados WHERE IdStatusChamado = @IdStatusChamado;""CREATE PROC spIncluirStatusChamados(NomeStatusChamado VARCHAR(30), "Ativo BIT) AS INSERT INTO TStatusChamados (NomeStatusChamado, Ativo) Values (NomeStatusChamado, Ativo);"
"CREATE PROC spAlterarStatusChamados(IdStatusChamado LONG, NomeStatusChamado VARCHAR(30), Ativo BIT) AS UPDATE TStatusChamados SET NomeStatusChamado = NomeStatusChamado, Ativo = Ativo WHERE IdStatusChamado = IdStatusChamado;"Testei com a procedure a seguir que funciona no SQL, e a mesma não funciona (com ou sem a @):
CREATE PROC spListarStatusChamados @IdStatusChamado int = null AS SELECT * FROM TStatusChamados WHERE IdStatusChamado= isnull(@IdStatusChamado,IdStatusChamado) ORDER BY IdStatusChamado
Obrigada. -
Vivi,
Deve ser alguma coisa com as funções do SQL. Acho que teria que fazer com IF, tipo:
IF @Parametro IS NULL
SELECT.... WHERE Campo = @Parametro
ELSE
SELECT .... ORDER BY
Vai ter que "adaptar" os procedimentos, vai dar um trabalhão, mas deve funcionar.
Abraço
-
Olá pessoal, tentei assim:
sSQL = "CREATE PROC spListarStatusChamados2(IdStatusChamado LONG) AS " _
& "IF IdStatusChamado IS NULL then " _
& "SELECT * FROM TStatusChamados; " _
& "Else " _
& "SELECT * FROM TStatusChamados WHERE IdStatusChamado = IdStatusChamado; " _
& "End if"
Mas deu a seguinte msg de erro:
Instrução SQL inválida. 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT' ou 'UPDATE' esperado.
Alguém tem uma idéia?
Obrigada. -
-
-
Ola marcelo ja trabalho com stored procedure no access e até onde eu sei é q nem o pessoal tem falado ele n aceita clausulas mais complexas, if, esle, case, nada disso... e acho tb que ele n aceita essa operação isnull(@IdStatusChamado,IdStatusChamado)
Se vc esta querendo verificar se um valor é nulo é só fazer (IdStatusChama is null) ou (IdStatusChama = "").
Outra coisa parametros no access é assim [:nomedoparametro].
Espero ter ajudado...
- Sugerido como Resposta Junior Galvão - MVPMVP quarta-feira, 2 de dezembro de 2015 14:33