Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Problema con procedimiento almacenado

Estas en el tema de Problema con procedimiento almacenado en el foro de Visual Basic clásico en Foros del Web. Hola muchachos, mucho tiempo sin andar por aca, a ver si me pueden ayudar,estoy dando mis primeros pasos con procedimientos almacenados y tengo una tabla ...
  #1 (permalink)  
Antiguo 01/06/2011, 19:25
Avatar de Kruzado  
Fecha de Ingreso: marzo-2007
Mensajes: 307
Antigüedad: 17 años, 1 mes
Puntos: 17
Problema con procedimiento almacenado

Hola muchachos, mucho tiempo sin andar por aca, a ver si me pueden ayudar,estoy dando mis primeros pasos con procedimientos almacenados y tengo una tabla en sql express 2005, si la enlazo directo a un grafico en visual, no tengo problemas. Pero si la abro con un procedimiento almacenado, no muestra datos, a pesar de que el recordset si tiene datos porque los recorro y los puedo ver, algunos me dicen que tengo que recorrer el recordset con un movelast y movefirst, pero si hago esto se cae el programa y me arroja que el conjunto de filas no admite la operacion, en realidad he googleado y revisado cientos de veces y no encuentro solucion, aca les pego el codigo a ver que estoy haciendo mal :

' Abro base
cn.Open "Provider=SQLNCLI; " & _
"Initial Catalog='Sistema Remoto PAC'; " & _
"Data Source=MASTER\SQLEXPRESS; " & _
"integrated security=SSPI; persist security info=True;"

'abro el recordset
Set cmd = New ADODB.Command
cmd.ActiveConnection = cn
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "srpgraface2"
rsProducts.CursorType = adOpenKeyset
Set rsProducts = cmd.Execute

'lo enlazo al grafico
With Chart1
.TitleText = titulin '"Registro Diario P.C.Q. - 2 Enfriador Harina"
.FootnoteText = pie
.ShowLegend = True
rsProducts.MoveLast
rsProducts.MoveFirst
Set .DataSource = rsProducts
End With

este es el procedimiento almacenado en SQL Server
USE [Sistema Remoto PAC]
GO
/****** Objeto: StoredProcedure [dbo].[srpgraface2] Fecha de la secuencia de comandos: 06/01/2011 20:43:09 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[srpgraface2]
-- Add the parameters for the stored procedure here
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

-- Insert statements for procedure here
select Fecha, Hora, Id, Temp1, Temp2, Temp3, Control from imoenah
END

desde ya muchas gracias amigos !!!!!
  #2 (permalink)  
Antiguo 02/06/2011, 08:24
 
Fecha de Ingreso: febrero-2011
Mensajes: 36
Antigüedad: 13 años, 2 meses
Puntos: 2
Respuesta: Problema con procedimiento almacenado

hola!

te sugiero que sea una funcion o, mejor aun, una vista en vez de un SP, ya que es un solo select dentro del SP.

Despues, desde VB6, la invocas construyendo la sentencia SQL tipo : "SELECT * FROM mifuncion" y la ejecutas usando un command pero con la clasura adcmdtext

Pero si quieres corregir este codigo, es que esta declarado adOpenKeySet, te sugiero cambiarlo a adOpenStatic. a mi gusto, es mas eficiente. pruebalo y postea los resultados.

http://www.forosdelweb.com/f29/sobre-adopenforwardonly-adopenkeyset-etc-220041/

Saludos.
  #3 (permalink)  
Antiguo 02/06/2011, 19:14
Avatar de Kruzado  
Fecha de Ingreso: marzo-2007
Mensajes: 307
Antigüedad: 17 años, 1 mes
Puntos: 17
Respuesta: Problema con procedimiento almacenado

como te decia, eso lo puedo hacer directo desde la base de datos, pero la idea mia es comenzar a utilizar procedimientos almacenados, cierto es solo un select, pero kiero partir por lo basico para despues empezar a complicarme la exstencia.

Hice lo que me dijiste, probe con todas las opciones adOpen y siempre me dio el mismo error, ahora estoy pensando que quizas es una limitante de SQL, que a todo esto utilizo Sql server express 2005...
  #4 (permalink)  
Antiguo 03/06/2011, 07:44
 
Fecha de Ingreso: febrero-2011
Mensajes: 36
Antigüedad: 13 años, 2 meses
Puntos: 2
Respuesta: Problema con procedimiento almacenado

estimado :

no es una limitante, yo mismo tengo recorset devueltos de una funcion, vista, o de una SP. tiene que haber algun problema al invocarlo.. ¿Probaste comentariando la linea donde declaras adopenkeyset?

te copio un ejemplo:

Dim cmdSQL New ADODB.Command
dim recordset as new ADODB.Recordset

With cmdSQL
Set .ActiveConnection = MyCon
.CommandText = "NombreSP"
.CommandType = adCmdStoredProc

.Parameters.Append .CreateParameter("@Var", adChar, adParamInput, 80, variable)

Set Recorset = .Execute

Set .ActiveConnection = Nothing
End With
Set cmdSQL = Nothing

Saludos.

Última edición por goffys1; 03/06/2011 a las 08:01
  #5 (permalink)  
Antiguo 06/06/2011, 12:25
Avatar de Kruzado  
Fecha de Ingreso: marzo-2007
Mensajes: 307
Antigüedad: 17 años, 1 mes
Puntos: 17
Respuesta: Problema con procedimiento almacenado

probe y probe y nada funciono (probe con tu ejemplo tambien y tampoco)... :(
  #6 (permalink)  
Antiguo 07/06/2011, 07:38
 
Fecha de Ingreso: febrero-2011
Mensajes: 36
Antigüedad: 13 años, 2 meses
Puntos: 2
Respuesta: Problema con procedimiento almacenado

mmm.. raro.. apuesto que es la forma de conectarse a la base.

agrega esta linea cuando abres la base.

miconexion.CursorLocation = adUseClient

Veamos que pasa...

Saludos.
  #7 (permalink)  
Antiguo 07/06/2011, 10:39
Avatar de Kruzado  
Fecha de Ingreso: marzo-2007
Mensajes: 307
Antigüedad: 17 años, 1 mes
Puntos: 17
Respuesta: Problema con procedimiento almacenado

perfecto, ahora no se cae en movelast y movefirst, el recordcount ya no me da -1 sino que el total del registro... pero... siempre hay un pero.... el mschart no me grafica los datos, aca el codigo :


With Chart1
.FootnoteText = pie
.ShowLegend = True
Set .DataSource = rsProducts
End With

muchas gracias por tu ayuda !!!!!!!!!
  #8 (permalink)  
Antiguo 07/06/2011, 13:17
 
Fecha de Ingreso: febrero-2011
Mensajes: 36
Antigüedad: 13 años, 2 meses
Puntos: 2
Respuesta: Problema con procedimiento almacenado

googleando encontre esto:

With MSChart1
.Visible = Tru
.ColumnCount = 1
.RowCount = m
.ColumnLabel = "Temperatura"
.ShowLegend = True
Do
.Data = rst.Fields("Temperatura")
.RowLabel = rst.Fields("FHcaptura")
rst.MoveNext
Loop Until rst.EOF
End With

Quizas te sirva...

Saludos.
  #9 (permalink)  
Antiguo 09/06/2011, 10:48
Avatar de Kruzado  
Fecha de Ingreso: marzo-2007
Mensajes: 307
Antigüedad: 17 años, 1 mes
Puntos: 17
Respuesta: Problema con procedimiento almacenado

eso sirve... de hecho asi lo tenia antes... pero si no hay otra alternativa... sera, asi es la vida... un millon de gracias por tu ayuda, caso cerrado!!!!
  #10 (permalink)  
Antiguo 09/06/2011, 12:35
 
Fecha de Ingreso: febrero-2011
Mensajes: 36
Antigüedad: 13 años, 2 meses
Puntos: 2
Respuesta: Problema con procedimiento almacenado

Dice un dicho : "hoy por ti, mañana por mi"...

Quizas mañana me toque preguntarte algo ;)

Saludos.

Etiquetas: procedimiento, almacenar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:02.