PROCEDURE MYSQL VB6

MGALDINO 30/06/2011 09:14:28
#378094
Pessoal bom dia,

Encontrei varios topicos sobre o assunto mais nenhum conseguiu resolver meu problema.

Criei uma Procedure no MySql Versao 5.0

CREATE PROCEDURE 'BUSCACEP'(NCEP)
SELECT * FROM TB_CEP WHERE CEP = NCEP;

No MySql executa normal, mais quando vou executar pelo VB6 da pau.

can[ô]t return a result set in the given context
[ô]não pode retornar um conjunto de resultados no contexto dado


Forma que estou executando no VB6 é a mesma forma que executo no MySql.

Dim Rs As ADODB.Recordset
Gsql = [Ô]CALL BUSCACEP([ô][Ô] & TxtCEP.Text & [Ô][ô])[Ô]
Set Rs = Conn.Execute(Gsql)





JESUEL.OLIVEIRA 30/06/2011 09:20:41
#378098
Amigo, tente tirar o CALL da GSQL

   
Dim Rs As ADODB.Recordset
Gsql = [Ô]BUSCACEP([ô][Ô] & TxtCEP.Text & [Ô][ô])[Ô]
Set Rs = Conn.Execute(Gsql)

MGALDINO 30/06/2011 09:25:40
#378099
Ja tentei isso amigo...
Executando assim me retorna erro de sintaxe.
XXXANGELSXXX 30/06/2011 10:01:58
#378109
Set rs = New ADODB.Recordset
Set Cmd = New ADODB.Command
With Cmd
.ActiveConnection = Conexao
.CommandType = adCmdStoredProc
.CommandText = [Ô]BUSCACEP[Ô]
[ô] ABAIXO O VALOR A SER PESQUISADO LEMBRANDO QUE TEM QUE TER ESSA VARIAVEL NA SUA STORAGE
.Parameters.Append .CreateParameter([Ô]pessid[Ô], adInteger, adParamInput, 10, TDBGrid1.Columns(1).Text)
Set rs = .Execute
[ô]PREENCHENDO UM GRID QUALQUER
If Not TDBGrid1.EOF Then
Set TDBGrid1.DataSource = rs
End If
Set .ActiveConnection = Nothing
MGALDINO 30/06/2011 10:20:40
#378117
Amigo já havia tentado...
Erro que retorna.

YOU HAVE AN ERROR IN YOUR SQL SYNTAX; CHECK THE MANUAL THAT
CORRESPONDS TO YOUR MYSQL SERVER VERSION FOR THE RIGTH SYNTAX TO USE NEAR {CALL BUSCACEP} AT LINE 1

Tradução: Você tem um erro em sua sintaxe SQL; verifique o manual que
Corresponde à sua versão do servidor MySQL para a sintaxe rigth USAR NEAR} {CALL BUSCACEP na linha 1

Forma que executei... criei uma procedure sem parametros para facilitar e mesmo assim nao foi.

Set Rs = New ADODB.Recordset
Set Cmd = New ADODB.Command
With Cmd
.ActiveConnection = Conn
.CommandType = adCmdStoredProc
.CommandText = [Ô]CALL BUSCACEP[Ô]
[ô] ABAIXO O VALOR A SER PESQUISADO LEMBRANDO QUE TEM QUE TER ESSA VARIAVEL NA SUA STORAGE
[ô].Parameters.Append .CreateParameter([Ô]pessid[Ô], adInteger, adParamInput, 10, TDBGrid1.Columns(1).Text)
Set Rs = .Execute
End With



Lembrando Executei com parametro, sem parametro, coloquei [Ô]call buscacep[Ô], sem o call.
A procedure executa normal no MYSQL.

XXXANGELSXXX 30/06/2011 10:34:42
#378122
Set Rs = New ADODB.Recordset
Set Cmd = New ADODB.Command
With Cmd
.ActiveConnection = Conn
.CommandType = adCmdStoredProc
.CommandText = [Ô]BUSCACEP[Ô]
[ô] ABAIXO O VALOR A SER PESQUISADO LEMBRANDO QUE TEM QUE TER ESSA VARIAVEL NA SUA STORAGE
.Parameters.Append .CreateParameter([Ô]NCEP[Ô], adInteger, adParamInput, 20, txtcep.text)
Set Rs = .Execute
End With

[ô]verifique os campos no parametro amigo.. , verifique o campo ncep,passei o valor como se fosse inteiro, verifique como esta no seu banco.. e nao coloque call para chamar a mesma, tem que ser o nome da storage.
MGALDINO 30/06/2011 10:44:37
#378125
Sim Amigo todos esses fatos tratei como informei anteriormente....

Crie Procedure sem parametros... portanto a linha de parametro nao precisa existir correto?

CREATE PROCEDURE 'BUSCACEP'()
SELECT * FROM TB_CEP;

E outra Assim
CREATE PROCEDURE 'INSERIRCEP'()
INSERT INTO TB_CEP VALUES (1,[ô]05524-665[ô],[ô]RUA TAL[ô], [ô]BAIRRO TAL[ô], [ô]CIDADE TAL[ô], [ô]ESTADO TAL[ô];

A procedure do Insert executa normal, da mesma forma que executo no MYSQL ela Executa no VB6.
Agora a Procedure do Select nao executa. (Quando a Procedure retorna Dados).

Valeu pela ajuda...
Todos esses fatos simples, tentei todos antes do post





XXXANGELSXXX 30/06/2011 10:57:22
#378127
exemplo de como preencher um grid, mas tem a select ai.. tente reconfigurar para seu caso.

  
Sub PreencheProdutos()
Set rsProdutos = New ADODB.Recordset
Set Cmd = New ADODB.Command
With Cmd
.ActiveConnection = Conexao
.CommandType = adCmdStoredProc
.CommandText = [Ô]sp_somarprodutos_cadpessoas[Ô]
.Parameters.Append .CreateParameter([Ô]pessid[Ô], adInteger, adParamInput, 10, TDBGrid1.Columns(1).Text)
Set rsProdutos = .Execute
If Not TDBGrid1.EOF Then
Set TDBGrid4.DataSource = rsProdutos
End If
Set .ActiveConnection = Nothing
End With
End Sub



MGALDINO 30/06/2011 11:16:36
#378132
Amigo so uma pergunta essa procedure que voce mandou de exemplo esta em MYSql.
Porque esse comando é o mesmo que me passou anteriormente.

Da o mesmo erro, na linha de Parameters tem [Ô]adParamInput[Ô]...
Tambem mudei para [Ô]adParamOutput[Ô].
Nao rodou...

Sei que voce esta tentando ajudar... Mais como falei todos os exemplos do forum tentei.

Existe alguma propriedade que voce diz que a procedure vai retornar dados, talves seja [Ô]adParamOutput[Ô] e mais alguma coisa.




MGALDINO 30/06/2011 16:27:34
#378166
Obrigado... Solucionado...

Peguei versão recente do meu drive de ODBC e funcionou...

Não é necessario todos os comando listados acima para executar procedure... basta

StrSql = [Ô]Call BuscaCep([ô]00000-000[ô])[Ô]
Conexao.execute(StrSql)
Tópico encerrado , respostas não são mais permitidas