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

Workspace

Estas en el tema de Workspace en el foro de Visual Basic clásico en Foros del Web. Alguien tiene idea de que es un Workspace? en internet encontre un ejemplo para crear registros en una base de datos por medio de una ...
  #1 (permalink)  
Antiguo 14/02/2011, 16:21
Avatar de Gakex  
Fecha de Ingreso: enero-2009
Mensajes: 137
Antigüedad: 15 años, 3 meses
Puntos: 4
Workspace

Alguien tiene idea de que es un Workspace?

en internet encontre un ejemplo para crear registros en una base de datos por medio de una transaccion (SQL), tema que me mantiene ocupado desde hace un buen tiempo, pero justo ahora cuando encuentro un ejemplo me aparece que un error:



Uploaded with ImageShack.us

el codigo es este y parece que esta hecho para vb4

Código:
Private Sub Form_Load()
         Dim Starttime, Endtime
         Dim db As Database
         Dim t As Recordset
         Dim i As Integer
         Dim tempName As String
         Dim temphone As String
         Set db = Workspace(0).OpenDatabase("c:\vb\BIBLIO.MDB") ' Uses a
          ' copy of BIBLIO.MDB.
         Set t = db.OpenRecordSet("Publishers", dbOpenTable)
         Starttime = Now
         'BeginTrans  ' Add this and CommitTrans (below) for greater speed.
         For i = 1 To 100
            tempName = "testname" & Str$(i) ' Make an arbitrary unique
                                            '  string.
            tempPhone = Str$(i)             ' Make arbitrary number.
            t.AddNew ' AddNew clears copy buffer to prepare for new record.
            t!PubID = 30 + i  ' Set primary key to unique value.
            t!Name = tempName  ' Set Name field to unique value.
            t!Telephone = tempPhone  ' Set Telephone field to unique value.
            t.Update   ' Write the record to disk or to transaction buffer.
         Next i
         'CommitTrans  ' Add this and BeginTrans (above) for greater speed.
         Endtime = Now
         MsgBox "Time required= " & Format(Endtime - Starttime, "hh:mm:ss")
         t.Close
         db.Close
         End
      End Sub
(http://support.microsoft.com/kb/146908/es)

Debo mencionar que también agregue los siguientes recursos al proyecto:

Microsoft ActiveX Data Objects 2.0 Library
Microsoft DAO 3.51 Object Lirary
Microsoft Data Binding Collection
Microsoft Data Formating Object Library

estos recursos los tengo en otro ejemplo que maneja una base de datos de forma parecida.

talvez lo que hace falta es agregarle otro recurso pero cual o que es lo que esta mal?

gracias.
  #2 (permalink)  
Antiguo 15/02/2011, 00:14
Avatar de Gakex  
Fecha de Ingreso: enero-2009
Mensajes: 137
Antigüedad: 15 años, 3 meses
Puntos: 4
Respuesta: Workspace

Bueno ya salte esa linea sin problemas, era algo tan tonto que nisiquiera sabia bueno aqui abajo dejo una imagen y el link donde encontre ayuda.


Uploaded with ImageShack.us
http://www.canalvisualbasic.net/manu.../acceso-datos/

resulta que en la pagina anterior encontre que efectivamente tengo que agregar una referencia Microsoft DAO 3.51 Object Library y ademas antes de Workspace(0) agregar el objeto DBEngine. para que final mente quede asi: DBEngine.Workspace(0).Opendatabase("c:\db1.mbd")

aqui viene:
Código:






Deberá utilizar esta jerarquía cuando cree o tenga acceso a determinados objetos.
Por ejemplo, la instrucción siguiente abre una base de datos:
Set dbMydb = DBEngine.Workspaces(0).OpenDatabase("Mibd.mdb")
Bueno ahora intentare solucionar el problema de la siguiente linea y me acerco a lograr las transacciones que son mi objetivo principal, de hecho queria hacer un tema con ese nombre pero crei que ya tenia la mitad ganada pero no, porcierto no encontre informacion sobre las transacciones, solo el codigo que presento arriba pero soporte microsoft me dio la info incompleta.
  #3 (permalink)  
Antiguo 17/02/2011, 02:26
Avatar de Gakex  
Fecha de Ingreso: enero-2009
Mensajes: 137
Antigüedad: 15 años, 3 meses
Puntos: 4
Respuesta: Workspace

ya quedo!

Básicamente es cuestión de priorizar los recursos que están referenciados al proyecto en cuestión.
yo las acomode como en la imagen de abajo.


Uploaded with ImageShack.us
aquí dejo el código de este ejercicio.

que lo que hace según Microsoft es agilizar el llenado de la base de datos realizando una transacción.


Código:
Sub Trans(datos As String)
         Dim Starttime, Endtime
         Dim db As Database
         Dim t As Recordset
         Dim i As Integer
         Dim tempName As String
         Dim temphone As String

         
         Set db = DBEngine.Workspaces(0).OpenDatabase(datos) ' Uses a
          ' copy of datos.MDB.
         Set t = db.OpenRecordset("Publishers", dbOpenDynaset)
         Starttime = Now
         BeginTrans  ' Add this and CommitTrans (below) for greater speed.
         For i = 0 To 10000
            tempName = "testname" & Str$(i) ' Make an arbitrary unique
                                            '  string.
            tempPhone = Str$(i)             ' Make arbitrary number.
            t.AddNew ' AddNew clears copy buffer to prepare for new record.
            't!PubID = 30 + i   ' Set primary key to unique value.
            t!Name = tempName  ' Set Name field to unique value.
            t!Telephone = tempPhone  ' Set Telephone field to unique value.
            t.Update   ' Write the record to disk or to transaction buffer.
         Next i
         CommitTrans   ' Add this and BeginTrans (above) for greater speed.
         Endtime = Now
         MsgBox "Time required= " & Format(Endtime - Starttime, "hh:mm:ss")
         t.Close
         db.Close
         End
End Sub

Private Sub Form_Load()
Trans (App.Path & "/BIBLIO.MDB")
End Sub
Y bueno una transacción es como una regla condicional todo o nada para cuando se tienen que hacer varias operaciones en una base de datos con el objetivo de que nada se quede a la mitad, en otras palabras si hay un problema de energia y no se termina la operacion correctamente, la base de datos no sera modificada.

exactamente no se como funciona, pero esta delimitada por dos métodos
  • BeginTrans que comienza una nueva transacción
  • CommitTrans que termina la operación y en este caso da el visto bueno y termina la transacción
  • RollbackTrans este cancela cualquier movimiento hecho durante la transacción.

y con esto queda cerrado el tema que mas que nada se trato de las transacciones jeje.

Etiquetas: Ninguno
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 05:36.