• Jueves 2 de Mayo de 2024, 07:06

Autor Tema:  palabra "new"  (Leído 4070 veces)

rock_park185

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
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

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
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
    • Ver Perfil
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
    • Ver Perfil
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
    • Ver Perfil
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
    • Ver Perfil
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
  1.  
  2. dim f as form
  3.  
  4.  
pero no puedes hacer esto:
Código: Visual Basic
  1.  
  2. set f= new form
  3.  
  4.  
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
  1.  
  2. Set f= new form1
  3.  
  4.  


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
  1.  
  2. Dim cn As Connection
  3.     Dim ws As Workspace
  4.    
  5.     Set ws = DAO.CreateWorkspace("MiEspacioTrabajo", "nombreUsuario", "contraseña", dbUseJet)
  6.     Set cn = ws.OpenConnection("MiConexion", , , "ODBC:DATAASE=xxx;UID=Usuario;PWD=contraseña;DSN=siseutiliza")
  7.  
  8.  


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<----