Foros del Web » Programando para Internet » ASP Clásico »

Problema de Conexion

Estas en el tema de Problema de Conexion en el foro de ASP Clásico en Foros del Web. Cuando uso este codigo de conexion en ASP, me funciona sinproblemas, pero cuando intento usarlo en VB me arroja un error : "No se ha ...
  #1 (permalink)  
Antiguo 10/11/2004, 07:39
Avatar de pcarvajal  
Fecha de Ingreso: enero-2002
Mensajes: 701
Antigüedad: 23 años, 4 meses
Puntos: 8
Pregunta Problema de Conexion

Cuando uso este codigo de conexion en ASP, me funciona sinproblemas, pero cuando intento usarlo en VB me arroja un error : "No se ha definido el tipo definido por el usuario" apuntando directamente a la linea en negrita
Que será lo que sucede?


Dim id, pwd, server, basestring As String
Dim basedatos As String
Dim Coneccion As String
Dim Rs As Recordset

usuario = "mi_usuario"
pwd = "mi_password"
servidor = "mi_servidor"
basestring = "mi_base"

Set basedatos = New ADODB.Connection
Coneccion = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=" & usuario & ";Pwd=" & pwd & ";Initial Catalog=" & basestring & ";Data Source=" & servidor
basedatos.ConnectionString = Coneccion
basedatos.Open

Sql = "SELECT * FROM mi_tabla (NoLock) "
Set Rs = New ADODB.Recordset: Rs.Open Sql, basedatos, adOpenDynamic, adLockOptimistic
  #2 (permalink)  
Antiguo 10/11/2004, 11:32
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Lo que sucede es que en VB, utilizas New para instanciar una conexión declarada con anterioridad no?

p.e.
Private basedatos As ADODB.Connection

Y luego lo instanciarías

Set basedatos = New ADODB.Connection

Pero en VBS, no es necesario, solo necesitarías algo como:

Set basedatos = Server.CreateObject("ADODB.Connection")

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #3 (permalink)  
Antiguo 10/11/2004, 12:47
Avatar de pcarvajal  
Fecha de Ingreso: enero-2002
Mensajes: 701
Antigüedad: 23 años, 4 meses
Puntos: 8
aun asi me arroja error..
a ver si es que puedes echarme una manito por favor:
http://www.forosdelweb.com/showthrea...635#post863635
  #4 (permalink)  
Antiguo 10/11/2004, 13:35
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Trataste de cambiar la conexión por un DSN?
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #5 (permalink)  
Antiguo 10/11/2004, 13:44
Avatar de pcarvajal  
Fecha de Ingreso: enero-2002
Mensajes: 701
Antigüedad: 23 años, 4 meses
Puntos: 8
estoy bloqueado :S
for example??
  #6 (permalink)  
Antiguo 10/11/2004, 13:51
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Create un DSN, al parecer el problema es al abrir la DB me equivoco?

entonces desde el origen de datos, creas el DSN a esa DB y te haces una constante que llame a dicho DNS:

yo siempre pongo en la sección general de declaraciones lo siguiente:

Código:
Private Oconn As ADODB.Connection
Private rs As ADODB.Recordset
Const cadConx = "DSN=tuDSN"
Private strSQL As Variant

Sub Algo()
  Set Oconn = New ADODB.Connection
  Oconn.Open cadConx
End Sub
Como te decían asegúrate de tener las referencias de ADO agregadas...

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #7 (permalink)  
Antiguo 10/11/2004, 14:14
Avatar de pcarvajal  
Fecha de Ingreso: enero-2002
Mensajes: 701
Antigüedad: 23 años, 4 meses
Puntos: 8
Es que es extraño, mas que problema al abrir la base, me da la sensacion que las sentencias del codigo no las encuentra o algo asi (por ejemplo: en basedatos.ConnectionString = Coneccion me dice que "No se encontro el metodo o el miembro de datos" )
Ahora, si lo hiciera como tu dices, que tendria que hacer con el resto del codigo?
  #8 (permalink)  
Antiguo 10/11/2004, 14:21
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Seguro que tienes las referencias??

Project -> References:

Microsoft ActiveX Data Objects 2.5 Library
Microsoft ActiveX Data Objects Recordset 2.5 Library

Y si, tendrías que cambiar nada mas la parte de instanciar la conexión...
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #9 (permalink)  
Antiguo 10/11/2004, 14:31
Avatar de pcarvajal  
Fecha de Ingreso: enero-2002
Mensajes: 701
Antigüedad: 23 años, 4 meses
Puntos: 8
seguro, mira:
en GENERAL --> DECLARACIONES tengo:
Private basedatos As ADODB.Connection

en GENERAL --> show_grilla tengo:
Private Sub show_grilla()

Dim usuario, contrasena, servidor, basestring As String
Dim basedatos As Connection
Dim Coneccion As String
Dim Rs As Recordset

usuario = "mi_usuario"
contrasena = "mi_contrasena"
servidor = "mi_servidor"
basestring = "mi_base"

Set basedatos = New ADODB.Connection
Coneccion = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=" & usuario & ";Pwd=" & contrasena & ";Initial Catalog=" & basestring & ";Data Source=" & servidor
basedatos.ConnectionString = Coneccion
basedatos.Open

SQL2 = "SELECT * FROM agr_seguros (NoLock) "
Set Rs = New ADODB.Recordset: Rs.Open SQL2, basedatos, adOpenDynamic, adLockOptimistic

grilla.Rows = 0

If Not Rs.EOF Then
While Not Rs.EOF
grilla.Rows = grilla.Rows + 1
grilla.Row = grilla.Rows
grilla.Cols = 3
grilla.Col = 1
grilla.Text = RTrim(Rs.Fields("codigo_bien"))
grilla.Col = 2
grilla.Text = RTrim(Rs.Fields("nom_cia_seg"))
grilla.Col = 3
grilla.Text = RTrim(Rs.Fields("monto_poliza"))
Rs.MoveNext
Wend
End If

Set Rs = Nothing
End Sub


y aun así me arroja ese error que te mencioné
  #10 (permalink)  
Antiguo 10/11/2004, 14:36
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Bueno, si estás completamente seguro que tienes las referencias mencionadas, entonces es algo más, te recomendaría como te dije anteriormente, create otra forma y hazte una conexión mediante DSN de la forma ya comentada, si eso no funciona, pon el número de error y lo buscamos...


Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #11 (permalink)  
Antiguo 10/11/2004, 14:45
 
Fecha de Ingreso: octubre-2004
Mensajes: 104
Antigüedad: 20 años, 6 meses
Puntos: 0
--------------------------------------
en GENERAL --> DECLARACIONES tengo:
Private basedatos As ADODB.Connection

en GENERAL --> show_grilla tengo:
Private Sub show_grilla()

Dim usuario, contrasena, servidor, basestring As String
Dim basedatos As Connection
Dim Coneccion As String
Dim Rs As Recordset

usuario = "mi_usuario"
contrasena = "mi_contrasena"
servidor = "mi_servidor"
basestring = "mi_base"

Set basedatos = New ADODB.Connection
---------------------------------------


A ver, hace tiempo que no toco VB, pero probare suerte.

Has declarado en general la variable basedatos bien, pero dentro del procedimiento la has vuelto a declarar (local), y si haces referencia a ella desde dentro del procedimiento te ira a la local, y no a la declarada en general.

Quita:
"Dim basedatos As Connection"
Y prueba suerte.

  #12 (permalink)  
Antiguo 10/11/2004, 14:51
Avatar de pcarvajal  
Fecha de Ingreso: enero-2002
Mensajes: 701
Antigüedad: 23 años, 4 meses
Puntos: 8
quité la línea que me dijo PosDon, compilé y ahora me arroja
este error: "Error 13 en tiempo de ejecución: No coinciden los tipos"
en esta linea: Set Rs = New ADODB.Recordset
  #13 (permalink)  
Antiguo 10/11/2004, 14:58
Avatar de pcarvajal  
Fecha de Ingreso: enero-2002
Mensajes: 701
Antigüedad: 23 años, 4 meses
Puntos: 8
actualizo:
seguí el consejo del amigo u_goldman y

en GENERAL --> DECLACIONES agregué:
Private RS As ADODB.Recordset

en GENERAL --> show_grilla eliminé:
Dim Rs As Recordset

ahora con la conexion al parecer no hay error, pero me arroja lo siguiente:
"Error 30009 en tiempo de ejecucion: Valor de fila no válido"
en la línea: grilla.row = grilla.rows
  #14 (permalink)  
Antiguo 10/11/2004, 15:29
 
Fecha de Ingreso: octubre-2004
Mensajes: 104
Antigüedad: 20 años, 6 meses
Puntos: 0
Prueba a setear.

grilla.row = grilla.rows - 1

Donde pones

grilla.row = grilla.rows

Por si la primera fila empieza a identificarse como la 0 y no como la 1.
  #15 (permalink)  
Antiguo 11/11/2004, 07:44
Avatar de pcarvajal  
Fecha de Ingreso: enero-2002
Mensajes: 701
Antigüedad: 23 años, 4 meses
Puntos: 8
excelente, ahora si me funciona!
aun asi tengo un par de dudas:
porque los datos parecen como si estuvieran "apretados" unos con otros??? (me refiero a que el ancho de la celda es muy angosto)
es posible ahora que mostré esos datos, hacer click en la celda y luego modificarlos?
  #16 (permalink)  
Antiguo 11/11/2004, 14:16
 
Fecha de Ingreso: octubre-2004
Mensajes: 104
Antigüedad: 20 años, 6 meses
Puntos: 0
Ahí me pillas, ya no me acuerdo.

Lo de que salgan los datos ajustados me imagino que sera por la propiedad width de cada columna (el ancho) que si lo seteas antes, no tienes problemas. De lo segundo no te puedo decir :?

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 11:41.