Domingo 22 de Diciembre de 2024, 13:14
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
Visual Basic 6.0 e inferiores
(Moderador:
F_Tanori
) »
palabra "new"
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: palabra "new" (Leído 4228 veces)
rock_park185
Nuevo Miembro
Mensajes: 3
palabra "new"
«
en:
Miércoles 17 de Febrero de 2010, 00:56 »
0
Hola amigos de solocodigo, esta es mi primera vez en este foro y espero me puedan ayudar. estoy realizando un programa de una bitacora de lost and found y ya casi la tengo con excepcion de l reporte, encontre un programa que realiza reportes en la web y hace lo que necesito, lo anexe a mi programa y lo ajuste usando mi información y mis datos, (lo mas seguro es que algo no haya hecho algo bien) y cuando genero el modulo de reportes me marca el error en esta parte del código.
Private Sub Form_Load()
Move (Screen.Width - Width) 2, (Screen.Height - Height) 2
Set cn = New Connection ******************************
aqui marca el error diciendo "el uso de la palabra clave new no es valido"
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;User ID=Admin;Data Source=" & App.Path & "bitacora.mdb;Mode=Share Deny None;Extended Properties=';COUNTRY=0;CP=1252;LANGID=0x0409';Jet OLEDB:System database='';Jet OLEDB:Registry Path='';Jet OLEDB:Database Password='';Jet OLEDB:Global Partial Bulk Ops=2"
***el codigo de abajo es el original y el de arriba es el de mi programa, mi bd se llama bitacora
'cn.Open "Provider=MSDASQL.1;Persist Security Info=False;Extended Properties=DSN=MS Access Database;DBQ=C:Bitácora_Fairmont_respusbBitacora.mdb;DefaultDir=C:Bitácora_Fairmont_respusb;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;UID=admin;"
End Sub
el programa cuando se genera solo si funciona a la perfeccion, pero no se que estoy haciendo mal, por favor necesito que me ayuden para corregirlo, si necesitan mas datos de mi error este es mi correo
Rock_park185@hotmail.com
gracias amigos de solocodigo
Tweet
F_Tanori
Moderador
Mensajes: 1919
Nacionalidad:
Re: palabra "new"
«
Respuesta #1 en:
Miércoles 17 de Febrero de 2010, 19:10 »
0
"cuando se genera solo?" que significa eso?
Pudieras mostrar el codigo completo?
Saludos
" ExIsTo y A vEcEs PiEnSo "
NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================
rock_park185
Nuevo Miembro
Mensajes: 3
Re: palabra "new"
«
Respuesta #2 en:
Jueves 18 de Febrero de 2010, 04:24 »
0
claro, a lo que me refiero con generar es el hecho de echarlo andar, (menú>ejecutar F5) por ejemplo, el menú principal al darle clic al botón reportes, invoca el reporte eje. > reportes.show
> menu.hide
voy a poner el codigo del formulario que genera el reporte, como te dije, lo encontre en la web y sustitui los datos originales poniendo los mios, practicamente no cambie nada, solo informacion, nada de estructura.
Option Explicit
'This program generates datareport with two parameter
'values set during runtime.I have used dataenvironment
'and Microsoft Jet.OLEDB 3.51 ver in this case.
'Autor By:Prakash.v
Private Sub cmdall_Click()
query ("select * from articulos")
If deparam.rscmdparam.State = adStateOpen Then
deparam.rscmdparam.Close
End If
deparam.cmdparam CDate("01/01/1000"), CDate("01/01/2100")
Load rptparam
rptparam.Show
End Sub
Private Sub cmdprint_Click()
On Error GoTo trap
If deparam.rscmdparam.State = adStateOpen Then
deparam.rscmdparam.Close
End If
deparam.cmdparam DTPicker1.Value, DTPicker2.Value
Load rptparam
rptparam.Show
trap:
Exit Sub
End Sub
Private Sub DTPicker1_Change()
query ("select * from articulos where fechareg between #" & DTPicker1.Value & "# and #" & DTPicker2.Value & "#")
End Sub
Private Sub DTPicker2_Change()
query ("select * from articulos where fechareg between #" & DTPicker1.Value & "# and #" & DTPicker2.Value & "#")
End Sub
Private Sub Form_Activate()
query ("select * from articulos")
End Sub
Private Sub Form_Load()
Move (Screen.Width - Width) 2, (Screen.Height - Height) 2
Set cn = New Connection**********************************************AQUI EL ERROR
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;User ID=Admin;Data Source=" & App.Path & "bitacora.mdb;Mode=Share Deny None;Extended Properties=';COUNTRY=0;CP=1252;LANGID=0x0409';Jet OLEDB:System database='';Jet OLEDB:Registry Path='';Jet OLEDB:Database Password='';Jet OLEDB:Global Partial Bulk Ops=2"
End Sub
Private Sub Form_Unload(Cancel As Integer)
rs.Close
cn.Close
End Sub
Private Sub query(sql1 As String)
Set rs = New Recordset
rs.CursorLocation = adUseClient
rs.Open sql1, cn, adOpenForwardOnly, adLockReadOnly
Set MSHFlexGrid1.DataSource = rs
MSHFlexGrid1.Refresh
End Sub
*************************************************************************************************************
LOS OTROS 2 COMPONENTES DEL REPORTE ES EL DATAREPORT (RPTPARAM) Y EL DATAENVIRONMENT (DEPARAM), SI DESEAS TE MANDO PICS DE LA CONEXION Y EN SU DEFECTO IGUAL PUEDO ENVIARTE MI PROYECTO COMPLETO, TU ME DICES COMPAÑERO, ESTOY A TUS ORDENES Y GRACIAS POR RESPONDERME.
McNel
Nuevo Miembro
Mensajes: 1
Re: palabra "new"
«
Respuesta #3 en:
Sábado 20 de Febrero de 2010, 00:48 »
0
Buenas,
ese error te lo marca porque no has definido la variable cn
En la seccion de declaraciones del form deberias poner:
Dim cn as Connection
Como comentario personal, te diria que no considero bueno limitarse a copiar y usar un codigo sin comprenderlo ya que asi no se aprende nada.
Saludos.
rock_park185
Nuevo Miembro
Mensajes: 3
sigue sin funcionar
«
Respuesta #4 en:
Sábado 20 de Febrero de 2010, 18:42 »
0
de hecho no solo utilizo codigo por que si, lo voy analizando para comprenderlo, asi he aprendido bastante por que veo como lo hacen y parto de ello.
por otra tengo un modulo en el cual lo tengo declado como publica
public cn as connection y de igual manera ya lo intente como me propusiste, pero me sigue marcando el mismo error, y sigo sin saber que hacer "el uso de la palabra clave new no es valida", agradeceria me propusieras otra solucion, de antemano nuevamente muchas gracias.
Nebire
Miembro HIPER activo
Mensajes: 670
No te enteras....
«
Respuesta #5 en:
Domingo 21 de Febrero de 2010, 00:38 »
0
Estás usando una clase connection no un objeto.
Por ejemplo , tu puedes hacer este código:
Código: Visual Basic
dim
f
as
form
pero no puedes hacer esto:
Código: Visual Basic
set
f=
new
form
puesto que form no es un objeto, es necesario adjudicarle uan referencia de instancia,
lo correcto sería algo como esto:
Código: Visual Basic
Set
f=
new
form1
Ahora bien, tu dices que cuando ejecutas el código (supongo que el proyecto de ejemplo original) el código funciona correctamente, por lo que entiendo que lo que te fallan son las referencias.
Así si tu haces una referencia a 'DAO' (Microsoft DAO 3'51 Object library), te ocurrirá este error, porque la clase connection es 'PublicNotCreatable' (valor 2) cuando se diseño, lo que implica que no puede usarse New ni CreateObject. Para las clases con la propiedad Instancing que fueron diseñadas con el valor 'PublicNotCretable', significa que la aplicación crea las clases que necesite, externamente sólo podremos utilizarlas pero no crear nuevas instancias, sólo referencias a las que el objeto ActiveX permita.
En DAO primero tienes que crear un objeto workspace, (luego si se requiere, opcionalmente, un objeto Database con el objeto workspace creado) y finalmente con el objeto workspace creado obtienes un objeto connection al abrir la conexión. ejemplo:
Código: Visual Basic
Dim
cn
As
Connection
Dim
ws
As
Workspace
Set
ws = DAO.CreateWorkspace(
"MiEspacioTrabajo"
,
"nombreUsuario"
,
"contraseña"
, dbUseJet)
Set
cn = ws.OpenConnection(
"MiConexion"
, , ,
"ODBC:DATAASE=xxx;UID=Usuario;PWD=contraseña;DSN=siseutiliza"
)
Por tanto es asumible que tu estás empleando un objeto connection que no es el que utiliza la aplicación original, por ejemplo si usaras una referencia al objeto ADODB (Microsoft ActiveX Data Objects 2.5 Library), si que permitirá crear instancias del objeto connection directamente, porque al crear esta librería en su diseño a las clases en la propiedad instancing se declaró 'MultiUse' (valor 5).
Revisa tu proyecto y muestra una captura de las referencias que tienes en el proyecto y otra captura de las referencias del proyecto original, verás (y nosotros si nos enseñas la captura) que al menos una referencia (librería) que contiene una clase Connection no coinncide con la otra. Para ser más explícito ya en el proyecto se explica
Citar
I have used dataenvironment
'and
Microsoft Jet.OLEDB 3.51
ver in this case.
...
Para otra ocasión explicita que tipos de objetos tienes, no basta a veces con señalar la clase también es necesario señalar la librería, ya que yo puedo crear infinitas librerías con una clase Connection de modo que nada tengan que ver entre sí aparte del nombre.
Te adjunto una imagen para que '''veas''' las diferencias entre ambos objetos connection, cómo pertenecen a diferentes librerías y sobretodo las propiedades que tiene cada uno... fíjate como la clase connection de DAO no tiene el método Open, lo que debería servirte de guía para saber que no es esa referencia la que se está utilizando (en el proyecto original).
«Ma non troppo»
----> ModoVacaciones = False<----
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
Visual Basic 6.0 e inferiores
(Moderador:
F_Tanori
) »
palabra "new"