Discussion:
Borrar registros mediante macro....
(demasiado antiguo para responder)
Palegox
2004-08-13 10:12:04 UTC
Permalink
Hola a todos, mi consulta es la siguiente:

Estoy tratando de, por medio de una macro, copiar la tabla principal de mi
proyecto, cambiándola de nombre (para resguardar los datos), y crear una
tabla igual (mismos campos, mismos formatos) para iniciar de nuevo la
recopilación de datos.

He conseguido con las opciones de la propia macro, copiar la tabla,
cambiarla de nombre, pero no se como vaciarla, o recetearla, ya que tiene un
autonumerico.

Por otro lado, como puedo, en una consulta crear una campo nuevo, y que el
valor sea determinado por el contenido de otro campo de la misma consulta?
En ocasiones anterior, me comentan que en una tabla no es recomendable,
pero, y en una consulta?

Se que solo escribo para preguntar, pero ya estoy aprendiendo.....

De antemano, Gracias...
Palegox.
Victor Delgadillo
2004-08-13 10:42:31 UTC
Permalink
Contesto la parte de calcular un valor en una consulta:
Simplemente creas el campo: nombre:=<formula>
Por ejemplo, si tienes Dias y SalarioPorDia y deseas el total devengado:
Salario:=[Dias] * [SalarioPorDia]
Esto crea una columna con el producto de los campos. Claro que no es
conveniente guardar en un campo de una tabla este valor, ya que siempre esta
disponible al multiplicar los campos, por otro lado, al cambiar cualquiera
de los datos, el producto cambia, no asi el valor almacenado en el campo.

Para vaciar la tabla, una vez copiada, puedes hacer una pequena subrutina
que borre todos los registros:

Public Sub BorrarRegistros (Tabla as String)
Dim sSQL as String
sSQL = "Delete * FROM " & Tabla
CurrentDb.Execute sSQL
End Sub

Luego la llamas desde el macro como cualquier funcion.

--
Victor Delgadillo [MVP Access]
Miami, Florida

Consultas al grupo, asi todos nos beneficiamos.
Vea los MVP: http://www.microsoft.com/communities/mvp/mvp.mspx
Post by Palegox
Estoy tratando de, por medio de una macro, copiar la tabla principal de mi
proyecto, cambiándola de nombre (para resguardar los datos), y crear una
tabla igual (mismos campos, mismos formatos) para iniciar de nuevo la
recopilación de datos.
He conseguido con las opciones de la propia macro, copiar la tabla,
cambiarla de nombre, pero no se como vaciarla, o recetearla, ya que tiene un
autonumerico.
Por otro lado, como puedo, en una consulta crear una campo nuevo, y que el
valor sea determinado por el contenido de otro campo de la misma consulta?
En ocasiones anterior, me comentan que en una tabla no es recomendable,
pero, y en una consulta?
Se que solo escribo para preguntar, pero ya estoy aprendiendo.....
De antemano, Gracias...
Palegox.
Palegox
2004-08-17 10:44:48 UTC
Permalink
Muchas Gracias Victor, por interesarte en mi problema.

En el primer caso, creo que no me explique bien, tratare de hacerlo mas
detallado para que me quede bien explicado.

Mi tabla tiene entre sus campos uno llamado "Nombre", y los nombres se
seleccionana desde un 'combo box'. quiero hacer una consulta que solo me
muestre los registros relacionados con una persona, asi que lo que intento
hacer, es que en la consulta, si el campo "Nombre" tiene como valor a
"Jorge", en otro campo me ponga un "1", y en los que no, "0", para que en
una segunda consulta, basada en la consulta anterior, solo me muestre los
registros con ese "1", y solo seran de dicha persona. La formula que uso, es
la siguiente:

Expr1: IIf([Nombre]="Jorge","1","0")

Pero en vista Hoja de Datos, en el campo con la formula, solo me indica
"Error", aun que al guardar la consulta, no encuentra error en la
formula.Tambien habia intentado usar el filtro de la propia consulta, pero
no me funciona, ya que si pongo "Jorge" en 'criteria', en vista Hoja de
Datos, no me muestra ningun registro, aunque yo se que si lo hay.


En cuanto a la segunda consulta que hago en mi mensaje anterior, hay algo
que no entendí; en la subrutina que tan amablemente me envías, al ejecutarse
este código, se borrarán los registros en la tabla actual?, o se va a
dirigir a una tabla designada por mi?, y si es así, de que manera le indico
cual es la tabla a borrar?.

Muchas gracias Victor, por tu apoyo.

Saludos.
Palegox.

PD: De cualquier manera, voy a tratar de investigar para tratar de
contestarme a mi mismo....
Post by Victor Delgadillo
Simplemente creas el campo: nombre:=<formula>
Salario:=[Dias] * [SalarioPorDia]
Esto crea una columna con el producto de los campos. Claro que no es
conveniente guardar en un campo de una tabla este valor, ya que siempre esta
disponible al multiplicar los campos, por otro lado, al cambiar cualquiera
de los datos, el producto cambia, no asi el valor almacenado en el campo.
Para vaciar la tabla, una vez copiada, puedes hacer una pequena subrutina
Public Sub BorrarRegistros (Tabla as String)
Dim sSQL as String
sSQL = "Delete * FROM " & Tabla
CurrentDb.Execute sSQL
End Sub
Luego la llamas desde el macro como cualquier funcion.
--
Victor Delgadillo [MVP Access]
Miami, Florida
Consultas al grupo, asi todos nos beneficiamos.
Vea los MVP: http://www.microsoft.com/communities/mvp/mvp.mspx
Post by Palegox
Estoy tratando de, por medio de una macro, copiar la tabla principal de mi
proyecto, cambiándola de nombre (para resguardar los datos), y crear una
tabla igual (mismos campos, mismos formatos) para iniciar de nuevo la
recopilación de datos.
He conseguido con las opciones de la propia macro, copiar la tabla,
cambiarla de nombre, pero no se como vaciarla, o recetearla, ya que
tiene
Post by Victor Delgadillo
un
Post by Palegox
autonumerico.
Por otro lado, como puedo, en una consulta crear una campo nuevo, y que el
valor sea determinado por el contenido de otro campo de la misma consulta?
En ocasiones anterior, me comentan que en una tabla no es recomendable,
pero, y en una consulta?
Se que solo escribo para preguntar, pero ya estoy aprendiendo.....
De antemano, Gracias...
Palegox.
Victor Delgadillo
2004-08-17 12:18:44 UTC
Permalink
En la sub para borrar la variable (que va como argumento es 'Tabla'). Es
decir, llamas a la subrutina:
BorrarRegistros("Empleados")
Esto borra los registros de la tabla "Empleados". Nota los espacios que hay
separando los elementos.

la Expresion:=Iif([Nombre]="Jorge","1","0") deberia funcionar, con la
excepcion que el campo [Nombre] no fuese alfanumerico, sino que numerico
(supongo no lo es). Por otro lado, es poco recomendable hacer busquedas de
registros basados en valores alfanumericos (como nombres, apellidos, etc.)
en vez de usar el numero del registro vinculado a la tabla secundaria.
Parece que el nombre (en este caso, 'Jorge') esta repetido en varios campos
y tratas de ver cuales son todos los 'Jorge' que tienes en la lista. Si es
asi, es siempre mejor usar una busqueda mas generica, como InStr(cadena,
cadena_que_buscas). En vez de Iif(...) usa:
Expresion:=Iif(InStr([Nombre],"Jorge") > 0, 1, 0)
esto detecta si el nombre Jorge esta contenido en cualquier parte del campo
[Nombre]. Mientras la igualdad (deben ser identicos) no funciona, el buscar
una cuerda dentro de otra es mas exacta en estos casos. Claro que en
ocaciones dara resultados no deseables, como si existieran "Jorge",
"Jorgette", "Jorgely" los cuales se mostrarian al buscar por "Jorge". Pero
por otro lado, si tienes Jorge Jose, Jorge M., " Jorge" ninguno de estos es
igual a "Jorge".

--
Victor Delgadillo [MVP Access]
Miami, Florida

Consultas al grupo, asi todos nos beneficiamos.
Vea los MVP: http://www.microsoft.com/communities/mvp/mvp.mspx
Post by Palegox
Muchas Gracias Victor, por interesarte en mi problema.
En el primer caso, creo que no me explique bien, tratare de hacerlo mas
detallado para que me quede bien explicado.
Mi tabla tiene entre sus campos uno llamado "Nombre", y los nombres se
seleccionana desde un 'combo box'. quiero hacer una consulta que solo me
muestre los registros relacionados con una persona, asi que lo que intento
hacer, es que en la consulta, si el campo "Nombre" tiene como valor a
"Jorge", en otro campo me ponga un "1", y en los que no, "0", para que en
una segunda consulta, basada en la consulta anterior, solo me muestre los
registros con ese "1", y solo seran de dicha persona. La formula que uso, es
Expr1: IIf([Nombre]="Jorge","1","0")
Pero en vista Hoja de Datos, en el campo con la formula, solo me indica
"Error", aun que al guardar la consulta, no encuentra error en la
formula.Tambien habia intentado usar el filtro de la propia consulta, pero
no me funciona, ya que si pongo "Jorge" en 'criteria', en vista Hoja de
Datos, no me muestra ningun registro, aunque yo se que si lo hay.
En cuanto a la segunda consulta que hago en mi mensaje anterior, hay algo
que no entendí; en la subrutina que tan amablemente me envías, al ejecutarse
este código, se borrarán los registros en la tabla actual?, o se va a
dirigir a una tabla designada por mi?, y si es así, de que manera le indico
cual es la tabla a borrar?.
Muchas gracias Victor, por tu apoyo.
Saludos.
Palegox.
PD: De cualquier manera, voy a tratar de investigar para tratar de
contestarme a mi mismo....
Post by Victor Delgadillo
Simplemente creas el campo: nombre:=<formula>
Salario:=[Dias] * [SalarioPorDia]
Esto crea una columna con el producto de los campos. Claro que no es
conveniente guardar en un campo de una tabla este valor, ya que siempre
esta
Post by Victor Delgadillo
disponible al multiplicar los campos, por otro lado, al cambiar cualquiera
de los datos, el producto cambia, no asi el valor almacenado en el campo.
Para vaciar la tabla, una vez copiada, puedes hacer una pequena subrutina
Public Sub BorrarRegistros (Tabla as String)
Dim sSQL as String
sSQL = "Delete * FROM " & Tabla
CurrentDb.Execute sSQL
End Sub
Luego la llamas desde el macro como cualquier funcion.
--
Victor Delgadillo [MVP Access]
Miami, Florida
Consultas al grupo, asi todos nos beneficiamos.
Vea los MVP: http://www.microsoft.com/communities/mvp/mvp.mspx
Post by Palegox
Estoy tratando de, por medio de una macro, copiar la tabla principal
de
Post by Palegox
mi
Post by Victor Delgadillo
Post by Palegox
proyecto, cambiándola de nombre (para resguardar los datos), y crear una
tabla igual (mismos campos, mismos formatos) para iniciar de nuevo la
recopilación de datos.
He conseguido con las opciones de la propia macro, copiar la tabla,
cambiarla de nombre, pero no se como vaciarla, o recetearla, ya que
tiene
Post by Victor Delgadillo
un
Post by Palegox
autonumerico.
Por otro lado, como puedo, en una consulta crear una campo nuevo, y
que
Post by Palegox
el
Post by Victor Delgadillo
Post by Palegox
valor sea determinado por el contenido de otro campo de la misma
consulta?
Post by Victor Delgadillo
Post by Palegox
En ocasiones anterior, me comentan que en una tabla no es
recomendable,
Post by Palegox
Post by Victor Delgadillo
Post by Palegox
pero, y en una consulta?
Se que solo escribo para preguntar, pero ya estoy aprendiendo.....
De antemano, Gracias...
Palegox.
Palegox
2004-08-18 04:04:57 UTC
Permalink
Te contesto entre lineas....
Post by Victor Delgadillo
En la sub para borrar la variable (que va como argumento es 'Tabla'). Es
BorrarRegistros("Empleados")
Esto borra los registros de la tabla "Empleados". Nota los espacios que hay
separando los elementos.
Correcto, ahora lo entiendo!!!...
Sabes, pensando y experimentando un poco, creo que seria mas conveniente
convertir la tabla como un Excel, ya que son datos para archivar, y seria
mas facil accesarlos; pero, (ya se me quema el cerebro), solo se van a
archivar una parte de los registros, previamente identificados. Como podria,
con la subrutina que me mandaste, borrar de la tabla, solo los registros que
cumplan una condicion?, me explico: Supon que en la tabla tengo 400
registros, de los cuales, en un campo los identifico como "Cerados" y
"Activos"; al final del periodo, quiero sacar de la tabla los registros
"Cerrados", y conservar los "Abiertos", previamente convirtiendo una tabla a
partir de una consulta con solo los registros "cerrados". Espero no liarme
solo.
Post by Victor Delgadillo
la Expresion:=Iif([Nombre]="Jorge","1","0") deberia funcionar, con la
excepcion que el campo [Nombre] no fuese alfanumerico, sino que numerico
(supongo no lo es).
Aqui, econtre algo curioso para mi, cuando el comboBox muestra un valor
seleccionado, lo que deja en el campo es la ubicacion numerica en la tabla
secundaria!!!, por eso no encontraba ningun "Jorgr", por que la funcion solo
veia 1, 2, 4... Que vasiado!!!
Post by Victor Delgadillo
Por otro lado, es poco recomendable hacer busquedas de
registros basados en valores alfanumericos (como nombres, apellidos, etc.)
en vez de usar el numero del registro vinculado a la tabla secundaria.
Parece que el nombre (en este caso, 'Jorge') esta repetido en varios campos
y tratas de ver cuales son todos los 'Jorge' que tienes en la lista. Si es
asi, es siempre mejor usar una busqueda mas generica, como InStr(cadena,
Expresion:=Iif(InStr([Nombre],"Jorge") > 0, 1, 0)
Esto no lo sabia, bueno, no lo entendia (ya que el Acces que uso esta en
ingles, y no es mucho lo que yo domino ese idioma, pero la lucha le hago),
pero es muy interesante, y me abre muchas posibilidades en el
proyecto....Gracias.
Post by Victor Delgadillo
esto detecta si el nombre Jorge esta contenido en cualquier parte del campo
[Nombre]. Mientras la igualdad (deben ser identicos) no funciona, el buscar
una cuerda dentro de otra es mas exacta en estos casos. Claro que en
ocaciones dara resultados no deseables, como si existieran "Jorge",
"Jorgette", "Jorgely" los cuales se mostrarian al buscar por "Jorge".
Pero
Post by Victor Delgadillo
por otro lado, si tienes Jorge Jose, Jorge M., " Jorge" ninguno de estos es
igual a "Jorge".
No sabes la gran ayuda que me das, y estoy aprendiendo mucho.
Gracias, y un Abrazo...
Palegox.
Post by Victor Delgadillo
--
Victor Delgadillo [MVP Access]
Miami, Florida
Consultas al grupo, asi todos nos beneficiamos.
Vea los MVP: http://www.microsoft.com/communities/mvp/mvp.mspx
Post by Palegox
Muchas Gracias Victor, por interesarte en mi problema.
En el primer caso, creo que no me explique bien, tratare de hacerlo mas
detallado para que me quede bien explicado.
Mi tabla tiene entre sus campos uno llamado "Nombre", y los nombres se
seleccionana desde un 'combo box'. quiero hacer una consulta que solo me
muestre los registros relacionados con una persona, asi que lo que intento
hacer, es que en la consulta, si el campo "Nombre" tiene como valor a
"Jorge", en otro campo me ponga un "1", y en los que no, "0", para que en
una segunda consulta, basada en la consulta anterior, solo me muestre los
registros con ese "1", y solo seran de dicha persona. La formula que
uso,
Post by Victor Delgadillo
es
Post by Palegox
Expr1: IIf([Nombre]="Jorge","1","0")
Pero en vista Hoja de Datos, en el campo con la formula, solo me indica
"Error", aun que al guardar la consulta, no encuentra error en la
formula.Tambien habia intentado usar el filtro de la propia consulta, pero
no me funciona, ya que si pongo "Jorge" en 'criteria', en vista Hoja de
Datos, no me muestra ningun registro, aunque yo se que si lo hay.
En cuanto a la segunda consulta que hago en mi mensaje anterior, hay algo
que no entendí; en la subrutina que tan amablemente me envías, al
ejecutarse
Post by Palegox
este código, se borrarán los registros en la tabla actual?, o se va a
dirigir a una tabla designada por mi?, y si es así, de que manera le
indico
Post by Palegox
cual es la tabla a borrar?.
Muchas gracias Victor, por tu apoyo.
Saludos.
Palegox.
PD: De cualquier manera, voy a tratar de investigar para tratar de
contestarme a mi mismo....
Post by Victor Delgadillo
Simplemente creas el campo: nombre:=<formula>
Salario:=[Dias] * [SalarioPorDia]
Esto crea una columna con el producto de los campos. Claro que no es
conveniente guardar en un campo de una tabla este valor, ya que siempre
esta
Post by Victor Delgadillo
disponible al multiplicar los campos, por otro lado, al cambiar
cualquiera
Post by Palegox
Post by Victor Delgadillo
de los datos, el producto cambia, no asi el valor almacenado en el
campo.
Post by Palegox
Post by Victor Delgadillo
Para vaciar la tabla, una vez copiada, puedes hacer una pequena
subrutina
Post by Palegox
Post by Victor Delgadillo
Public Sub BorrarRegistros (Tabla as String)
Dim sSQL as String
sSQL = "Delete * FROM " & Tabla
CurrentDb.Execute sSQL
End Sub
Luego la llamas desde el macro como cualquier funcion.
--
Victor Delgadillo [MVP Access]
Miami, Florida
Consultas al grupo, asi todos nos beneficiamos.
Vea los MVP: http://www.microsoft.com/communities/mvp/mvp.mspx
Post by Palegox
Estoy tratando de, por medio de una macro, copiar la tabla principal
de
Post by Palegox
mi
Post by Victor Delgadillo
Post by Palegox
proyecto, cambiándola de nombre (para resguardar los datos), y crear
una
Post by Palegox
Post by Victor Delgadillo
Post by Palegox
tabla igual (mismos campos, mismos formatos) para iniciar de nuevo la
recopilación de datos.
He conseguido con las opciones de la propia macro, copiar la tabla,
cambiarla de nombre, pero no se como vaciarla, o recetearla, ya que
tiene
Post by Victor Delgadillo
un
Post by Palegox
autonumerico.
Por otro lado, como puedo, en una consulta crear una campo nuevo, y
que
Post by Palegox
el
Post by Victor Delgadillo
Post by Palegox
valor sea determinado por el contenido de otro campo de la misma
consulta?
Post by Victor Delgadillo
Post by Palegox
En ocasiones anterior, me comentan que en una tabla no es
recomendable,
Post by Palegox
Post by Victor Delgadillo
Post by Palegox
pero, y en una consulta?
Se que solo escribo para preguntar, pero ya estoy aprendiendo.....
De antemano, Gracias...
Palegox.
Victor Delgadillo
2004-08-18 12:21:47 UTC
Permalink
Palegox,
Para borrar solo ciertos registros debes incluir la clausula WHERE (donde)
esto es igual|menor|mayor que esto.
Asi
Public Sub BorrarRegistros (Tabla as String)
Dim sSQL as String
' Like *Jorge* borra todos los nombres que contengan Jorge.
' Like Jorge* borra todos los nombres que contengan Jorge al comienzo
del campo.
' Like Jorge borra solo los campos que sean igual a Jorge.
' Nota las comillas simples alrededor de la parte alfanumerica
' debe leer: WHERE Name Like '*Jorge'
' una vez impreso la variable sSQL. Las variables alfanumericas deben
estar entre comillas simples.
sSQL = "Delete * FROM " & Tabla & " WHERE Name Like '" & "Jorge" & "'"

CurrentDb.Execute sSQL
End Sub


--
Victor Delgadillo [MVP Access]
Miami, Florida

Consultas al grupo, asi todos nos beneficiamos.
Vea los MVP: http://www.microsoft.com/communities/mvp/mvp.mspx
Post by Palegox
Te contesto entre lineas....
Post by Victor Delgadillo
En la sub para borrar la variable (que va como argumento es 'Tabla'). Es
BorrarRegistros("Empleados")
Esto borra los registros de la tabla "Empleados". Nota los espacios que
hay
Post by Victor Delgadillo
separando los elementos.
Correcto, ahora lo entiendo!!!...
Sabes, pensando y experimentando un poco, creo que seria mas conveniente
convertir la tabla como un Excel, ya que son datos para archivar, y seria
mas facil accesarlos; pero, (ya se me quema el cerebro), solo se van a
archivar una parte de los registros, previamente identificados. Como podria,
con la subrutina que me mandaste, borrar de la tabla, solo los registros que
cumplan una condicion?, me explico: Supon que en la tabla tengo 400
registros, de los cuales, en un campo los identifico como "Cerados" y
"Activos"; al final del periodo, quiero sacar de la tabla los registros
"Cerrados", y conservar los "Abiertos", previamente convirtiendo una tabla a
partir de una consulta con solo los registros "cerrados". Espero no liarme
solo.
Post by Victor Delgadillo
la Expresion:=Iif([Nombre]="Jorge","1","0") deberia funcionar, con la
excepcion que el campo [Nombre] no fuese alfanumerico, sino que numerico
(supongo no lo es).
Aqui, econtre algo curioso para mi, cuando el comboBox muestra un valor
seleccionado, lo que deja en el campo es la ubicacion numerica en la tabla
secundaria!!!, por eso no encontraba ningun "Jorgr", por que la funcion solo
veia 1, 2, 4... Que vasiado!!!
Post by Victor Delgadillo
Por otro lado, es poco recomendable hacer busquedas de
registros basados en valores alfanumericos (como nombres, apellidos, etc.)
en vez de usar el numero del registro vinculado a la tabla secundaria.
Parece que el nombre (en este caso, 'Jorge') esta repetido en varios
campos
Post by Victor Delgadillo
y tratas de ver cuales son todos los 'Jorge' que tienes en la lista. Si es
asi, es siempre mejor usar una busqueda mas generica, como InStr(cadena,
Expresion:=Iif(InStr([Nombre],"Jorge") > 0, 1, 0)
Esto no lo sabia, bueno, no lo entendia (ya que el Acces que uso esta en
ingles, y no es mucho lo que yo domino ese idioma, pero la lucha le hago),
pero es muy interesante, y me abre muchas posibilidades en el
proyecto....Gracias.
Post by Victor Delgadillo
esto detecta si el nombre Jorge esta contenido en cualquier parte del
campo
Post by Victor Delgadillo
[Nombre]. Mientras la igualdad (deben ser identicos) no funciona, el
buscar
Post by Victor Delgadillo
una cuerda dentro de otra es mas exacta en estos casos. Claro que en
ocaciones dara resultados no deseables, como si existieran "Jorge",
"Jorgette", "Jorgely" los cuales se mostrarian al buscar por "Jorge".
Pero
Post by Victor Delgadillo
por otro lado, si tienes Jorge Jose, Jorge M., " Jorge" ninguno de estos
es
Post by Victor Delgadillo
igual a "Jorge".
No sabes la gran ayuda que me das, y estoy aprendiendo mucho.
Gracias, y un Abrazo...
Palegox.
Post by Victor Delgadillo
--
Victor Delgadillo [MVP Access]
Miami, Florida
Consultas al grupo, asi todos nos beneficiamos.
Vea los MVP: http://www.microsoft.com/communities/mvp/mvp.mspx
Post by Palegox
Muchas Gracias Victor, por interesarte en mi problema.
En el primer caso, creo que no me explique bien, tratare de hacerlo mas
detallado para que me quede bien explicado.
Mi tabla tiene entre sus campos uno llamado "Nombre", y los nombres se
seleccionana desde un 'combo box'. quiero hacer una consulta que solo me
muestre los registros relacionados con una persona, asi que lo que
intento
Post by Victor Delgadillo
Post by Palegox
hacer, es que en la consulta, si el campo "Nombre" tiene como valor a
"Jorge", en otro campo me ponga un "1", y en los que no, "0", para que
en
Post by Victor Delgadillo
Post by Palegox
una segunda consulta, basada en la consulta anterior, solo me muestre
los
Post by Victor Delgadillo
Post by Palegox
registros con ese "1", y solo seran de dicha persona. La formula que
uso,
Post by Victor Delgadillo
es
Post by Palegox
Expr1: IIf([Nombre]="Jorge","1","0")
Pero en vista Hoja de Datos, en el campo con la formula, solo me indica
"Error", aun que al guardar la consulta, no encuentra error en la
formula.Tambien habia intentado usar el filtro de la propia consulta,
pero
Post by Victor Delgadillo
Post by Palegox
no me funciona, ya que si pongo "Jorge" en 'criteria', en vista Hoja de
Datos, no me muestra ningun registro, aunque yo se que si lo hay.
En cuanto a la segunda consulta que hago en mi mensaje anterior, hay
algo
Post by Victor Delgadillo
Post by Palegox
que no entendí; en la subrutina que tan amablemente me envías, al
ejecutarse
Post by Palegox
este código, se borrarán los registros en la tabla actual?, o se va a
dirigir a una tabla designada por mi?, y si es así, de que manera le
indico
Post by Palegox
cual es la tabla a borrar?.
Muchas gracias Victor, por tu apoyo.
Saludos.
Palegox.
PD: De cualquier manera, voy a tratar de investigar para tratar de
contestarme a mi mismo....
Post by Victor Delgadillo
Simplemente creas el campo: nombre:=<formula>
Por ejemplo, si tienes Dias y SalarioPorDia y deseas el total
Salario:=[Dias] * [SalarioPorDia]
Esto crea una columna con el producto de los campos. Claro que no es
conveniente guardar en un campo de una tabla este valor, ya que
siempre
Post by Victor Delgadillo
Post by Palegox
esta
Post by Victor Delgadillo
disponible al multiplicar los campos, por otro lado, al cambiar
cualquiera
Post by Palegox
Post by Victor Delgadillo
de los datos, el producto cambia, no asi el valor almacenado en el
campo.
Post by Palegox
Post by Victor Delgadillo
Para vaciar la tabla, una vez copiada, puedes hacer una pequena
subrutina
Post by Palegox
Post by Victor Delgadillo
Public Sub BorrarRegistros (Tabla as String)
Dim sSQL as String
sSQL = "Delete * FROM " & Tabla
CurrentDb.Execute sSQL
End Sub
Luego la llamas desde el macro como cualquier funcion.
--
Victor Delgadillo [MVP Access]
Miami, Florida
Consultas al grupo, asi todos nos beneficiamos.
Vea los MVP: http://www.microsoft.com/communities/mvp/mvp.mspx
Post by Palegox
Estoy tratando de, por medio de una macro, copiar la tabla principal
de
Post by Palegox
mi
Post by Victor Delgadillo
Post by Palegox
proyecto, cambiándola de nombre (para resguardar los datos), y crear
una
Post by Palegox
Post by Victor Delgadillo
Post by Palegox
tabla igual (mismos campos, mismos formatos) para iniciar de nuevo
la
Post by Victor Delgadillo
Post by Palegox
Post by Victor Delgadillo
Post by Palegox
recopilación de datos.
He conseguido con las opciones de la propia macro, copiar la tabla,
cambiarla de nombre, pero no se como vaciarla, o recetearla, ya que
tiene
Post by Victor Delgadillo
un
Post by Palegox
autonumerico.
Por otro lado, como puedo, en una consulta crear una campo nuevo, y
que
Post by Palegox
el
Post by Victor Delgadillo
Post by Palegox
valor sea determinado por el contenido de otro campo de la misma
consulta?
Post by Victor Delgadillo
Post by Palegox
En ocasiones anterior, me comentan que en una tabla no es
recomendable,
Post by Palegox
Post by Victor Delgadillo
Post by Palegox
pero, y en una consulta?
Se que solo escribo para preguntar, pero ya estoy aprendiendo.....
De antemano, Gracias...
Palegox.
Palegox
2004-08-19 04:15:40 UTC
Permalink
Creo que te acabas de ganar un rinconcito en el cielo, muchas gracias, me
salvaste la vida....

Es muy interesante esto del Access. Si me atoro en algo mas, estaré por aquí
de nuevo....

Muchas gracias...
Palegox.

PD: puedo mandarte mi proyecto a tu mail?, me gustaría tu opinión...
Post by Victor Delgadillo
Palegox,
Para borrar solo ciertos registros debes incluir la clausula WHERE (donde)
esto es igual|menor|mayor que esto.
Asi
Public Sub BorrarRegistros (Tabla as String)
Dim sSQL as String
' Like *Jorge* borra todos los nombres que contengan Jorge.
' Like Jorge* borra todos los nombres que contengan Jorge al comienzo
del campo.
' Like Jorge borra solo los campos que sean igual a Jorge.
' Nota las comillas simples alrededor de la parte alfanumerica
' debe leer: WHERE Name Like '*Jorge'
' una vez impreso la variable sSQL. Las variables alfanumericas deben
estar entre comillas simples.
sSQL = "Delete * FROM " & Tabla & " WHERE Name Like '" & "Jorge" & "'"
CurrentDb.Execute sSQL
End Sub
--
Victor Delgadillo [MVP Access]
Miami, Florida
Consultas al grupo, asi todos nos beneficiamos.
Vea los MVP: http://www.microsoft.com/communities/mvp/mvp.mspx
Post by Palegox
Te contesto entre lineas....
Post by Victor Delgadillo
En la sub para borrar la variable (que va como argumento es 'Tabla'). Es
BorrarRegistros("Empleados")
Esto borra los registros de la tabla "Empleados". Nota los espacios que
hay
Post by Victor Delgadillo
separando los elementos.
Correcto, ahora lo entiendo!!!...
Sabes, pensando y experimentando un poco, creo que seria mas conveniente
convertir la tabla como un Excel, ya que son datos para archivar, y seria
mas facil accesarlos; pero, (ya se me quema el cerebro), solo se van a
archivar una parte de los registros, previamente identificados. Como
podria,
Post by Palegox
con la subrutina que me mandaste, borrar de la tabla, solo los registros
que
Post by Palegox
cumplan una condicion?, me explico: Supon que en la tabla tengo 400
registros, de los cuales, en un campo los identifico como "Cerados" y
"Activos"; al final del periodo, quiero sacar de la tabla los registros
"Cerrados", y conservar los "Abiertos", previamente convirtiendo una
tabla
Post by Victor Delgadillo
a
Post by Palegox
partir de una consulta con solo los registros "cerrados". Espero no liarme
solo.
Post by Victor Delgadillo
la Expresion:=Iif([Nombre]="Jorge","1","0") deberia funcionar, con la
excepcion que el campo [Nombre] no fuese alfanumerico, sino que numerico
(supongo no lo es).
Aqui, econtre algo curioso para mi, cuando el comboBox muestra un valor
seleccionado, lo que deja en el campo es la ubicacion numerica en la tabla
secundaria!!!, por eso no encontraba ningun "Jorgr", por que la funcion
solo
Post by Palegox
veia 1, 2, 4... Que vasiado!!!
Post by Victor Delgadillo
Por otro lado, es poco recomendable hacer busquedas de
registros basados en valores alfanumericos (como nombres, apellidos,
etc.)
Post by Palegox
Post by Victor Delgadillo
en vez de usar el numero del registro vinculado a la tabla secundaria.
Parece que el nombre (en este caso, 'Jorge') esta repetido en varios
campos
Post by Victor Delgadillo
y tratas de ver cuales son todos los 'Jorge' que tienes en la lista.
Si
Post by Victor Delgadillo
es
Post by Palegox
Post by Victor Delgadillo
asi, es siempre mejor usar una busqueda mas generica, como
InStr(cadena,
Post by Victor Delgadillo
Post by Palegox
Post by Victor Delgadillo
Expresion:=Iif(InStr([Nombre],"Jorge") > 0, 1, 0)
Esto no lo sabia, bueno, no lo entendia (ya que el Acces que uso esta en
ingles, y no es mucho lo que yo domino ese idioma, pero la lucha le hago),
pero es muy interesante, y me abre muchas posibilidades en el
proyecto....Gracias.
Post by Victor Delgadillo
esto detecta si el nombre Jorge esta contenido en cualquier parte del
campo
Post by Victor Delgadillo
[Nombre]. Mientras la igualdad (deben ser identicos) no funciona, el
buscar
Post by Victor Delgadillo
una cuerda dentro de otra es mas exacta en estos casos. Claro que en
ocaciones dara resultados no deseables, como si existieran "Jorge",
"Jorgette", "Jorgely" los cuales se mostrarian al buscar por "Jorge".
Pero
Post by Victor Delgadillo
por otro lado, si tienes Jorge Jose, Jorge M., " Jorge" ninguno de estos
es
Post by Victor Delgadillo
igual a "Jorge".
No sabes la gran ayuda que me das, y estoy aprendiendo mucho.
Gracias, y un Abrazo...
Palegox.
Post by Victor Delgadillo
--
Victor Delgadillo [MVP Access]
Miami, Florida
Consultas al grupo, asi todos nos beneficiamos.
Vea los MVP: http://www.microsoft.com/communities/mvp/mvp.mspx
Post by Palegox
Muchas Gracias Victor, por interesarte en mi problema.
En el primer caso, creo que no me explique bien, tratare de hacerlo
mas
Post by Palegox
Post by Victor Delgadillo
Post by Palegox
detallado para que me quede bien explicado.
Mi tabla tiene entre sus campos uno llamado "Nombre", y los nombres se
seleccionana desde un 'combo box'. quiero hacer una consulta que
solo
Post by Victor Delgadillo
me
Post by Palegox
Post by Victor Delgadillo
Post by Palegox
muestre los registros relacionados con una persona, asi que lo que
intento
Post by Victor Delgadillo
Post by Palegox
hacer, es que en la consulta, si el campo "Nombre" tiene como valor a
"Jorge", en otro campo me ponga un "1", y en los que no, "0", para que
en
Post by Victor Delgadillo
Post by Palegox
una segunda consulta, basada en la consulta anterior, solo me muestre
los
Post by Victor Delgadillo
Post by Palegox
registros con ese "1", y solo seran de dicha persona. La formula que
uso,
Post by Victor Delgadillo
es
Post by Palegox
Expr1: IIf([Nombre]="Jorge","1","0")
Pero en vista Hoja de Datos, en el campo con la formula, solo me
indica
Post by Palegox
Post by Victor Delgadillo
Post by Palegox
"Error", aun que al guardar la consulta, no encuentra error en la
formula.Tambien habia intentado usar el filtro de la propia consulta,
pero
Post by Victor Delgadillo
Post by Palegox
no me funciona, ya que si pongo "Jorge" en 'criteria', en vista Hoja
de
Post by Palegox
Post by Victor Delgadillo
Post by Palegox
Datos, no me muestra ningun registro, aunque yo se que si lo hay.
En cuanto a la segunda consulta que hago en mi mensaje anterior, hay
algo
Post by Victor Delgadillo
Post by Palegox
que no entendí; en la subrutina que tan amablemente me envías, al
ejecutarse
Post by Palegox
este código, se borrarán los registros en la tabla actual?, o se va a
dirigir a una tabla designada por mi?, y si es así, de que manera le
indico
Post by Palegox
cual es la tabla a borrar?.
Muchas gracias Victor, por tu apoyo.
Saludos.
Palegox.
PD: De cualquier manera, voy a tratar de investigar para tratar de
contestarme a mi mismo....
Post by Victor Delgadillo
Simplemente creas el campo: nombre:=<formula>
Por ejemplo, si tienes Dias y SalarioPorDia y deseas el total
Salario:=[Dias] * [SalarioPorDia]
Esto crea una columna con el producto de los campos. Claro que no es
conveniente guardar en un campo de una tabla este valor, ya que
siempre
Post by Victor Delgadillo
Post by Palegox
esta
Post by Victor Delgadillo
disponible al multiplicar los campos, por otro lado, al cambiar
cualquiera
Post by Palegox
Post by Victor Delgadillo
de los datos, el producto cambia, no asi el valor almacenado en el
campo.
Post by Palegox
Post by Victor Delgadillo
Para vaciar la tabla, una vez copiada, puedes hacer una pequena
subrutina
Post by Palegox
Post by Victor Delgadillo
Public Sub BorrarRegistros (Tabla as String)
Dim sSQL as String
sSQL = "Delete * FROM " & Tabla
CurrentDb.Execute sSQL
End Sub
Luego la llamas desde el macro como cualquier funcion.
--
Victor Delgadillo [MVP Access]
Miami, Florida
Consultas al grupo, asi todos nos beneficiamos.
Vea los MVP: http://www.microsoft.com/communities/mvp/mvp.mspx
Post by Palegox
Estoy tratando de, por medio de una macro, copiar la tabla
principal
Post by Palegox
Post by Victor Delgadillo
de
Post by Palegox
mi
Post by Victor Delgadillo
Post by Palegox
proyecto, cambiándola de nombre (para resguardar los datos), y
crear
Post by Palegox
Post by Victor Delgadillo
una
Post by Palegox
Post by Victor Delgadillo
Post by Palegox
tabla igual (mismos campos, mismos formatos) para iniciar de nuevo
la
Post by Victor Delgadillo
Post by Palegox
Post by Victor Delgadillo
Post by Palegox
recopilación de datos.
He conseguido con las opciones de la propia macro, copiar la
tabla,
Post by Palegox
Post by Victor Delgadillo
Post by Palegox
Post by Victor Delgadillo
Post by Palegox
cambiarla de nombre, pero no se como vaciarla, o recetearla, ya
que
Post by Palegox
Post by Victor Delgadillo
Post by Palegox
tiene
Post by Victor Delgadillo
un
Post by Palegox
autonumerico.
Por otro lado, como puedo, en una consulta crear una campo
nuevo,
Post by Victor Delgadillo
y
Post by Palegox
Post by Victor Delgadillo
que
Post by Palegox
el
Post by Victor Delgadillo
Post by Palegox
valor sea determinado por el contenido de otro campo de la misma
consulta?
Post by Victor Delgadillo
Post by Palegox
En ocasiones anterior, me comentan que en una tabla no es
recomendable,
Post by Palegox
Post by Victor Delgadillo
Post by Palegox
pero, y en una consulta?
Se que solo escribo para preguntar, pero ya estoy
aprendiendo.....
Post by Victor Delgadillo
Post by Palegox
Post by Victor Delgadillo
Post by Palegox
Post by Victor Delgadillo
Post by Palegox
De antemano, Gracias...
Palegox.
Loading...