Visual Basic - Vaciar tabla Access

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 70
Ha aumentado su posición en 11 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Vaciar tabla Access

Publicado por Emilio (25 intervenciones) el 28/11/2019 20:39:55
Hola expertos. Quiero borrar todos los registros de la tabla 'stock' de mi Tabla1.mdb. Uso este código:


1
2
3
4
5
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=c:\TPVeyu\BD\tabla1.mdb"
 
Dim sql As String
sql = "delete * from stock"
CurrentDb.Execute sql

Me dice "se necesita un objeto".

Si alguien me soluciona esto, luego quiero el código para cargar la misma tabla con el rs de una consulta sql.
Gracias anticipadas por vuestra atención.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Andres Leonardo
Val: 3.791
Oro
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Vaciar tabla Access

Publicado por Andres Leonardo (1556 intervenciones) el 28/11/2019 22:04:53
Hola como vas ...
Eso nos ha pasado a todos

prueba con esto


1
2
3
4
5
6
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=c:\TPVeyu\BD\tabla1.mdb"
 
Dim sql As String
'Ese * ha vuelto loco a millones jejejejej , una razon mas para decir que todos nos ha vuelto loco un * 
sql = "delete  from stock"
CurrentDb.Execute sql

Ahora siendo serios : Una vez lei que es por que el * indica que todo los campos. en un select .. pero en el delete esta implicito
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 70
Ha aumentado su posición en 11 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Vaciar tabla Access

Publicado por Emilio (25 intervenciones) el 28/11/2019 22:30:38
Muchas gracias, Andrés, por tu rápida atención. Al leer tu sugerencia me ha sorprendido su sencillez, pero la explicación de que el 'delete' lleve implícito el asterisco ya me ha parecido extraña. Mi corta experiencia en esto de la programación me dice que muy pocas cosas son implícitas en VB6; todo ha de ser minuciosamente expresado y con tremendas exigencias de sintaxis. Así que he probado inmediatamente tu sugerencia y el depurador me sigue diciendo que nanay, que se necesita un objeto. Si fuera lo del asterisco me diría que la sintaxis está mal o simplemente que 'delete' lo lleva implícito. Bueno, no me funciona. ¿Se te ocurre algo respecto a esa ausencia de objeto?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Andres Leonardo
Val: 3.791
Oro
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Vaciar tabla Access

Publicado por Andres Leonardo (1556 intervenciones) el 29/11/2019 04:48:26
Hola es que esto no es un comando de vb esto es una instrucción sql y ahí donde te digo que la leí

Ahora lo que haré mañana es revisar tu código ahora estoy al teléfono pero si no es eso algo falta nombre de la tabla o algo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de gilman
Val: 432
Bronce
Ha aumentado 1 puesto en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Vaciar tabla Access

Publicado por gilman (254 intervenciones) el 29/11/2019 08:20:24
El problema es que la variable cn, o la variable CurrentDb no son de tipo Object
Probablemente no estes usando la clausula Option Explicit y no las has declarado por lo que serán de tipo Variant, pero sin ver todo el código, ni saber en que sentencia se produce el error, aunque me imagino que será en CurrentDB.Execute sql, poco mas se puede decir
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 70
Ha aumentado su posición en 11 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Vaciar tabla Access

Publicado por Emilio (25 intervenciones) el 29/11/2019 09:35:29
GILMAN
Muchas gracias. Lo has pillado rápido, el error lo sitúa en CurrentDb.Execute sql. Te pongo el código relevante para este problema. Está en el click de una imagen y, de momento, me he planteado vaciar la tabla en la que pretendo luego cargar el resultado de un sql. Si eres tan amable, me vendrían muy bien tus indicaciones para ambos propósitos: vaciar y cargar el rs resultante. Estoy aprendiendo por mi cuenta y voy despacio. Seguro que incumplo requisitos básicos que no domino todavía. Por ejemplo, eso de explicit option ¿tengo que incluirlo en este procedimiento (imgSelecc) o en el General de Form (frmSelArtic)?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private Sub imgSelecc_Click()
 
 Dim cn As New ADODB.Connection  'Crea el objeto Connection
 Dim rs As New ADODB.Recordset    'Crea el objeto Recordset
 
 rs.CursorLocation = adUseClient
 rs.CursorType = adOpenForwardOnly
 rs.LockType = adLockReadOnly
 
 cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=c:\TPVeyu\BD\tabla1.mdb"
 
   Dim sql As String
   sql = "delete from stock"
   CurrentDb.Execute sql
 
End Sub

POST:

He añadido ahí mismo la declaración de currentDB yme sigue dando error.91 (imagen adjunta)

1
2
3
4
5
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=c:\TPVeyu\BD\tabla1.mdb"
 Dim CurrentDB As Database
 Dim sql As String
   sql = "delete from stock"
   CurrentDB.Execute sql
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de gilman
Val: 432
Bronce
Ha aumentado 1 puesto en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Vaciar tabla Access

Publicado por gilman (254 intervenciones) el 29/11/2019 09:59:58
Yo lo marcaría como necesario en las opciones del editor, así cada vez que añadas un archivo de código a los proyectos el IDE lo añadirá directamente.
Como no lo tienes marcado, tienes que añadirlo a mano en la sección General, debe ser la primera sentencia de la sección, por lo menos, antes de las declaraciones.
De está forma el error que dará es Variable no definida, en tu caso, y viendo el código, me imagino que el problema es que en vez de usar la variable CurrentDb debes usar la variable cn
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 70
Ha aumentado su posición en 11 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Vaciar tabla Access

Publicado por Emilio (25 intervenciones) el 29/11/2019 11:17:25
GILMAN
¡BIEN!

La rutina de vaciar tabla funciona. He usado cn en lugar de currentBD. Voy comprendiendo este galimatías. Muchas gracias por tu ayuda. ¿Te animas a echarme una mano con el segundo objetivo de cargar la tabla vacía con el rsde una consulta? Voy hacer un intento y te digo dónde tropiezo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 70
Ha aumentado su posición en 11 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Vaciar tabla Access

Publicado por Emilio (25 intervenciones) el 29/11/2019 10:07:42
GILMAN, hola.

He visto que el error 91 se califica cuando "no se asigna una referencia válida a la variable de objeto con la instrucción Set.
Igualmente, es necesario inicializar un bloque With...End With con la ejecución de un punto de entrada de la instrucción With. ¿Quiere esto decir que después de establecer Set currentDB = ??? tengo que vaciar la tabla Tabla.stock mediante un bloque With. Lo veo complicado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Andres Leonardo
Val: 3.791
Oro
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Vaciar tabla Access

Publicado por Andres Leonardo (1556 intervenciones) el 29/11/2019 14:53:25
Si usas ADO con un DNS de sistemas directo a la base obtienes un objeto conexion y lyuego con esto pyuedes usar RS tranquilamente

Si queirtes un ejemplo me avisas.,...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 70
Ha aumentado su posición en 11 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Vaciar tabla Access

Publicado por Emilio (25 intervenciones) el 29/11/2019 15:45:16
Hola, Andrés. Gracias por el ofrecimiento.
¿DNS de sistemas? Eso ¿no es la base de datos de dominios de internet? ¿Es alguna tecnología similar?
Desde luego que me interesa mucho si es la forma de transferir un rs a una tabla access. Te informo:

En mis balbuceos de programador he llegado a este formulario con el que pretendo seleccionar un artículo de mi BD y mostrar sus movimientos de stock de un periodo, organizando por fechas su presentación. Las compras se obtienen de una tabla y las ventas de otra.
En la imagen formulario que adjunto puedes ver la idea. Estoy probando con un datagrid en el que ya he conseguido volcar las ventas, pero si hago lo mismo con las compras me las añadirá a continuación de las ventas y luego no creo que sepa organizar todo por fechas. Así que he pensado utilizar de herramienta intermedia una tabla que tengo creada en Access (c:\tabla1\stock) a la que pretendo transferir las consultas y luego organizarla, pero ahora caigo en que quizás pueda volcar todo junto en el datagrid si hago la consulta sql más complicada, buscando en una única consulta las dos informaciones. Mientras tú rumias esto, yo intentaré luego preparar esa consulta.

También, abusando de tu amabilidad, me gustaría que estudiaras la segunda imagen que adjunto, Esta es una aplicación comprada, en la que se obtiene algo parecido: en una ventana emergente se ofrecen las ventas de un artículo (mediante botón). Con otro botón se obtienen las compras. Yo quiero dar ambos movimientos (incluso el saldo en cada momento) en una sola ventana. Esa es la idea en la que me estoy inspirando. Pero ahora va la pregunta:
¿Tienes idea de qué tipo de ventana es esta de la imagen? Porque no parece un datagrid, pero lleva encabezados de campos y estéticamente es buena. Además, tiene el detalle de colorear el fondo de las columnas por separado. Esta aplicación está basada en una .mdb de Access 97, por lo que pienso que el VB no será muy moderno.

El código que te paso a continuación está en el control amarillo Seleccionar y de momento está así:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Private Sub imgSelecc_Click()
 
    artsel = lbArtic.List(lbArtic.ListIndex)
    lblArtMov = artsel 'artsel es Global
 
    Dim cn As New ADODB.Connection  'Crea el objeto Connection
    Dim rs As New ADODB.Recordset    'Crea el objeto Recordset
 
    rs.CursorLocation = adUseClient
    rs.CursorType = adOpenForwardOnly
    rs.LockType = adLockReadOnly
 
 
'------ obtención de datos de venta --------------------------------
    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=c:\TPVInforpyme\BD\TPVInforpyme.mdb"
    rs.Open "SELECT VTAS.fecha, =-1*SUM(VTAS.cantidad)as Unidades FROM  ConsumicionesClientes  as VTAS WHERE VTAS.nombre= '" + artsel + "' GROUP BY VTAS.fecha ORDER BY VTAS.fecha ", cn, adOpenStatic
    DataGrid1.ClearFields
    Set DataGrid1.DataSource = rs
 
 
'cn.close      No puedo cerrarlo porque el datagrid se queda en blanco
 
End Sub

De momento es lo que se me ocurre contarte. Dime si necesitas más.
Agradecido de antemano
Emilio
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Andres Leonardo
Val: 3.791
Oro
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Vaciar tabla Access

Publicado por Andres Leonardo (1556 intervenciones) el 29/11/2019 18:02:14
Vamos a hacer algo .. te voy a hacerte un demo te lo paso por esta via ... espera
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Andres Leonardo
Val: 3.791
Oro
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Vaciar tabla Access

Publicado por Andres Leonardo (1556 intervenciones) el 29/11/2019 18:54:56
Adjunto demo ...

El user y el pass es a o demo

adicional te envio un leeme de como crear el dsn en la pc y adicional c debes hacerlo

con esto podemos iniciar a hacer lo que quieres del grid y CLARO que se puede eso.

login


cargargrid


saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 70
Ha aumentado su posición en 11 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Vaciar tabla Access

Publicado por Emilio (25 intervenciones) el 29/11/2019 19:35:23
Vaya! La primera en la frente, Andrés... y la segunda. Veo que has trabajado y con poco resultado, por mi parte. En general, antes de los detalles, me siento muy ignorante en este campo como para atacar con toda esta parafernalia. No conozco ni siquiera la nomenclatura con la que te mueves como pez en el agua. Ya he visto, por ejempo, lo del DSN de sistema. He visto que puedo acceder desde el Panel de Control, pero todo lo tengo que averiguar lentamente. La sorpresa es que mi cuadro de DSN de sistema está vacío, tal como verás en la imagen adjunta, mientras que el controlador que señalas está en mi DSN de usuario. Ante eso, no he hecho nada.

La segunda sorpresa es que he descomprimido el zip y lo tengo en Desktop\Demo.zip\Demo
Ahí he clicado Demo.vbp y la respuesta es "no se ha encontrado el archivo" El path lo puedes ver en la imagen adjunta.
Siento que hayas trabajado y que de esta parte del hilo yo haya fallado. Tendrías que pensar en un método menos sofisticado. De lo contrario, me temo que no voy a poder seguirte. Muchas, muchas gracias por tus buenas intenciones.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Andres Leonardo
Val: 3.791
Oro
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Vaciar tabla Access

Publicado por Andres Leonardo (1556 intervenciones) el 29/11/2019 19:46:02
Pero que no !!!

No es por gusto ... es correcto que lo tengas vacios en tu pc por que no tienes yo si ... entoncs al presionar AGREGAR te va a permitir hacer lee el documento

Vamos que hay que ponerle ganas nada mas .. el resto literalmente "SE APRENDE"

Respecto al primer punto ... solo debes aghregar .. si no lee el documento

El segundo es relativamente sencillo y se debe a qeu tienes un DEMO.zip

Por favor , descomprime el arhivo .zip y esa carpeta DEMO colocala en el escritorio pero no zipeada si no sin hacer UNZIP

luego haz el DSN

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 70
Ha aumentado su posición en 11 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Vaciar tabla Access

Publicado por Emilio (25 intervenciones) el 29/11/2019 20:18:59
Andrés, gracias por tu paciencia.
He agregado el controlador, seleccionando la Datos.mdb
He lanzado Demo.vbp. Se ha cargado bien, lo he ejecutado y ... mira la imagen
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Andres Leonardo
Val: 3.791
Oro
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Vaciar tabla Access

Publicado por Andres Leonardo (1556 intervenciones) el 29/11/2019 20:52:24
comi le pusiste al DSN

si deseas podemos chatear por WS te envie mendsaje

avisame si quieres
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 70
Ha aumentado su posición en 11 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Vaciar tabla Access

Publicado por Emilio (25 intervenciones) el 29/11/2019 22:06:58
Adjunto vista del DSN incorporado.
En cuanto a chatear ws no soy experto en esos deportes (jubilado español bastante mayorcito). ¿Qué es ws?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Andres Leonardo
Val: 3.791
Oro
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Vaciar tabla Access

Publicado por Andres Leonardo (1556 intervenciones) el 29/11/2019 22:54:48
Haber a lo que vamos


en el codigo hay un archivo que se llama module1.bas... en ese archivo modulo hay un procedimiento ahi hay que cambiar una linea la que dice conexion.open .. te asjunto como debe quedar, si deseas coipia estas lineas y sobre eescribelas. pero recuerda que solo debe quedar un SUB MAIN solo uno.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub Main()
'On Error GoTo etqerror
    'conexion.Open ("dsn=dsnrrhh;user id = sa;pwd= rrhh ;") ' asi es mi ejemplo
    conexion.Open ("dsn=datos;user id = sa;pwd= rrhh ;") 'asi debe quedar el tuyo
    'Unidad = "Z:\"
    Unidad = App.Path & "\"
    MsgBox "Conexion Exitosa", vbInformation, "Conexion"
    frmLogin.Show
 
Exit Sub
 
etqerror:
    MsgBox "Error de Conexion " & Err, vbCritical, "Conexion"
 
    End Sub


Punto 2 aqui puedes subir imagenes :

DSN2


Punto 3 WS es Whatsapp te envie el numero de telefono por si deserias una consulta

En todo caso vamos avanzando ... ejecuta el programa y me avisas , recuerda que paso a paso se llega !!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 70
Ha aumentado su posición en 11 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Vaciar tabla Access

Publicado por Emilio (25 intervenciones) el 29/11/2019 23:09:20
Uno. Tengo que dejar esto. Mañana reanudo y veremos.
Dos. Lo de que puedo subir imágenes no lo entiendo. Entiendo que puedo adjuntar ¡y no jpgs, sino zips!. Pero no puedo embeber jpgs como en cualquier correo o documento. He intentado insertarla en el texto, pero no deja.
Tres. He imaginado que WS pudiera ser Whatsapp, pero no he visto ningún número. El mío es +34 644545054, aunque como no domino esto no sé qué será mejor. Si quieres podemos intentarlo mañana. No sé qué diferencia horaria tenemos ¿dónde estás?
Lo deja hasta mañana, muchas gracias, de nuevo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Andres Leonardo
Val: 3.791
Oro
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Vaciar tabla Access

Publicado por Andres Leonardo (1556 intervenciones) el 30/11/2019 04:49:14
Jejej que descanses mañana lo revisas correctamente

Si en la opcion de escribior justo sobre donde escribes hay algo que dice subir imagenes ahi las subes... si lo de adjuntar zip esta abajo de donde escribes mira arria de donde escribes ahi dice subir imagenes.

lastimosamente los fines de semana no reviso la pagina pero con gusto te ayudo ya mismo te agrego y el lunes lo revisamos por cierto soy de Ecuador en sudamerica asi mas o menos son entre 6y 7 horas de diferencia



Un saludo desde Guayaquil Ecuador
La perla del Pacifico, Tierra del Encebollado y cuna del Barcelona de Guayaquil.


Andres
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 70
Ha aumentado su posición en 11 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Vaciar tabla Access

Publicado por Emilio (25 intervenciones) el 02/12/2019 18:49:57
Hola, Andrés, espero que hayas tenido un buen finde. Por aquí, algo inesperado me hace salir de viaje unos días, todavía no sé cuántos, espero que no pase de una semana. A mi vuelta, me gustaría retomar este hilo, si todavía estás generosamente dispuesto a ello. Ayer, pensando en esto, en una más fluida comunicación, me pareció que me vendría muy bien hacerlo por email privadamente. No por hacerlo en privado, que va contra el espíritu de este foro, sino por facilitarme algo que me está resultando bastante complejo. Si te parece bien, puedes confirmármelo por esa vía. Si no es así, aceptaré sin problema continuar el tema aquí en el foro.
Muchas gracias
Emilio
emilioyoldi@gmail.com
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Andres Leonardo
Val: 3.791
Oro
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Vaciar tabla Access

Publicado por Andres Leonardo (1556 intervenciones) el 02/12/2019 19:34:55
Hola Emilio

Pero claro .. vuelves a comentar este hilo y lo continuamos un excelente viaje
Saludos Cordiales.

Andres.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar