VB X FIREBIRD - STORED PROCEDURE

CAPITAO.GARCIA 14/01/2011 00:17:15
#362239
Galera é o seguinte, to com um problema

Eu tenho 2 SPs.

Uma pega o ultimo codigo da tabela e soma mais um, como um gerador
E o segundo salva o codigo inutilizado.

Sempre que eu chamo a primeira SP
chamo a segunda SP
depois chamo a primeira SP novamente, dá erro 3021.

Li na internet que preciso preparar e despreparar a SP, mas como faço isso?
Tentei da seguinte forma, mas não funcionou:

Function PegaCodigo(tabela As String) As Integer
Dim objCmd As New ADODB.Command
Dim objRS As New ADODB.Recordset
Set Banco = New cBanco
Banco.AbrirBanco

With objCmd
.ActiveConnection = Banco.Conexao
.CommandType = adCmdStoredProc
.CommandText = [Ô]PICOD[Ô]
.Parameters.Refresh
.Parameters(0) = UCase$(Left$(tabela, 3))
.Prepared = True
End With

Set objRS = objCmd.Execute
PegaCodigo = objRS(0).Value

Set objRS = Nothing
objCmd.Prepared = False
Set objCmd = Nothing

Banco.FecharBanco
Set Banco = Nothing
End Function


Agradeço qualquer tentativa de ajuda. Obrigado.
CAPITAO.GARCIA 14/01/2011 09:15:21
#362254
GOODSPEAKERS, obrigado pela dica,

mas é que um amigo meu falou que no Delphi funciona certinho com o Prepare e o Unprepare
Pq que no VB não da?? Esse é o problema

Obrigado
LLAIA 15/01/2011 00:08:21
#362342
Vc sabe o que acontece com o Prepare setado com true? Qual é o contexto transacional da invocação das duas SPs ? Tem uma conexão pra cada SP ? Quando vc chama a segunda SP?
CAPITAO.GARCIA 15/01/2011 10:39:38
#362355
Não sei o que acontece com prepare setado como true,
pq eu vi no codigo em Delphi assim conexao.prepare, e conexao.unprepare

Não entendi sua segunda pergunta, LLAIA

È a mesma conexao pros dois SPs. Já tentei abrir e fechar o banco todas as vezes que chama, mas nao deu certo.

Eu chamo a segunda SP quando cancelo um cadastro,


Grato desde ja!
LLAIA 16/01/2011 13:17:13
#362434
Olha o que acontece com a propriedade Prepared setada: http://www.devguru.com/Technologies/ado/quickref/command_prepared.html

Vc acha que tem alguma coisa a ver com o erro? Aliás, qual é a descrição do erro 3021? é um erro retornado pelo driver de conexão ou é da ADO?

Pelo código que vc postou, vejo que somente aquela SP usa a conexão, a segunda está de fora. Qual é o código que vc chama a segunda SP ?

E outra, porque não usar o Generator ? Porque salvar código inutilizado? Qual seria a lógica disso?

CAPITAO.GARCIA 17/01/2011 07:51:02
#362459
Não sei como usa generator ainda, vou pesquisar sobre isso.
Obrigado LLAIA
Tópico encerrado , respostas não são mais permitidas