SOBREESCRIBIR EN UNA BASE DE DATOS

Solo consultas sobre macros y código VBA Excel.

Reglas del Foro
1. Antes de hacer tu pregunta intenta con el buscador de este foro (muchas preguntas ya fueron respondidas antes!)
2. Si haces una nueva pregunta, es muy recomendable que adjuntes el ejemplo Excel para poder comprenderla mejor!
3. Realiza tu pregunta de forma clara, explicando bien cada paso de lo que haces y tendrás más probabilidad de respuesta!
Compartir en:
     

SOBREESCRIBIR EN UNA BASE DE DATOS

Notapor lpolagigi » 27 Oct 2011 13:32

Hola a todos... Tengo un userform que uso para vaciar los datos en una hoja de excel. La idea es que al introducir el primer dato (placa de un vehículo) lo busque en la base de datos y de ahí en adelante sobreescriba los siguientes datos asociados (No. registro, empresa, kms. acumulados, horas acumuladas, etc). Si no existe esa placa porque el vehículo es revisado por primera vez, que lo añada al final de la lista....
Le hice este código, y no logro que me sobreescriba si ya existe, sino que siempre me lo añade (y repite) al final de la lista.... No sé qué me falta o qué me sobra.. o si los pongo en orden incorrecto...
Agradezco sus comentarios

Private Sub ComIntroducir_Click()
Dim contador As Integer
Dim PLACA As String
Dim EMPRESA As String
Dim KMS As Integer
Dim HORAS As Integer
Dim FREVISION As Date

Dim LastRow As Long

PLACA = TxtPlacaChuto.Text
EMPRESA = TxtEmpresa.Text
KMS = TxtKms.Value
HORAS = TxtHoras.Value
FREVISION = TxtFechaRev.Value


ActiveWorkbook.Sheets("BASE CHUTO").Select
LastRow = Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row

Range("a3").Select
While ActiveCell.Value <> ""
DATO = ActiveCell.Value

If DATO = PLACA Then
ActiveCell.Offset(0, 1).Select
Else
Cells(LastRow, 1).Select
ActiveCell.Value = PLACA
ActiveCell.Offset(0, 1).Select
End If

Wend

ActiveCell.Offset(-1, 0).Select
contador = ActiveCell.Value
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = contador + 1
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = PLACA
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = EMPRESA
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = KMS
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = HORAS
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = FREVISION

End Sub
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
lpolagigi
Miembro Frecuente
Miembro Frecuente
 
Registrado: 28 Sep 2011 15:32

Re: SOBREESCRIBIR EN UNA BASE DE DATOS

Notapor celinaresb » 28 Oct 2011 09:23

Q tal lpolagigi

Yo tambien soy nuevo en el tema y bueno... en este foro de 5 preguntas q llego a hacer si consigo respuesta a al menos 1 es mucha suerte! asi q mientras te dan respuesta dejo este archivo que encontre hace poco y que me ha servido como ejemplo pues estoy haciendo algo por el estilo a lo que mencionas.

el ejemplo 3 reemplaza datos ya existentes asi q talvez te sea util!

Saludos y Exitos!
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
celinaresb
Miembro Frecuente
Miembro Frecuente
 
Registrado: 12 Jul 2011 12:06
Ubicación: Madrid, España

Re: SOBREESCRIBIR EN UNA BASE DE DATOS

Notapor lpolagigi » 29 Oct 2011 13:12

Mil Gracias. Parece que es justo lo que necesito, lo voy a probar.
No había podido agradecerte porque pasé dos días sin internet (nada raro en Venezuela).

Saludos.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
lpolagigi
Miembro Frecuente
Miembro Frecuente
 
Registrado: 28 Sep 2011 15:32

Re: SOBREESCRIBIR EN UNA BASE DE DATOS

Notapor lpolagigi » 31 Oct 2011 10:24

Hola... No, el ejemplo que me mandaron no hace lo que necesito.... Estuve tratando de adaptarlo, pero tampoco he podido.. Si alguien me puede ayudar, se lo agradezco mucho... Les anexo el archivo de prueba que yo tengo....
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
lpolagigi
Miembro Frecuente
Miembro Frecuente
 
Registrado: 28 Sep 2011 15:32

Re: SOBREESCRIBIR EN UNA BASE DE DATOS

Notapor hcfenix » 31 Oct 2011 20:03

saludos amigo, te dejo un pequeño ejemplo de como ingresar, modificar y eliminar registros.

si el numero de placa existe te preguntara si deseas sobreescribir.

bueno checalo y espero que sea de ayuda para tu proyecto.
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
hcfenix
Miembro Frecuente
Miembro Frecuente
 
Registrado: 27 Sep 2010 17:11

Re: SOBREESCRIBIR EN UNA BASE DE DATOS

Notapor lpolagigi » 01 Nov 2011 22:59

Está perfecto! Muchísimas gracias... y aprendí una nueva función que no conocía "Cells.find"... Uyy, estos novatos como fastidiamos! Gracias nuevamente
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
lpolagigi
Miembro Frecuente
Miembro Frecuente
 
Registrado: 28 Sep 2011 15:32

Re: SOBREESCRIBIR EN UNA BASE DE DATOS

Notapor celinaresb » 28 Nov 2011 12:45

Hola hcFemix,

Tu archivo de prueba funciona a la perfeccion y de hecho lo he usado como ejemplo para al mio, sin embargo sigo sin poder hacer funcionar una de mis opciones la cual es la Modificar un registro q seria algo asi como la tuya de ingresar datos.

Mi codigo es (o mejor dicho tu codigo adaptado al mio):

Código: Seleccionar todo
Private Sub CommandButton3_Click()
Application.ScreenUpdating = False
Worksheets("Users").Select

If TextBox1 <> Empty Then
    If Application.WorksheetFunction.CountIf(Range("A:A"), TextBox1) Then
        If MsgBox("El Usuario ya existe desea sobre-escribir los datos?", _
        vbYesNo + vbQuestion, "INFORMACION") = vbNo Then Exit Sub
        Range("A1").Select
        Cells.Find(What:=TextBox1, After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
        MatchCase:=False).Activate
        almacenar
        limpiar
        MsgBox "los cambios se ha guardado correctamente", vbInformation, " CEMEX España - SES"
        Exit Sub
    End If
End If

Dim LastRow As Long
ActiveWorkbook.Sheets("Users").Select
LastRow = Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
Cells(LastRow, 1).Select

almacenar
limpiar
contar
MsgBox "datos guardados", vbInformation, " CEMEX España - SES"

End Sub


Y los codigos para almacenar, limpiar y contar son los identicos a los tuyos pero como mencionaba antes, adaptados a los mios.


Resulta que al dar a Modificar no sobre escribe los datos y no hace nada.

alguna idea del porque no funciona??
gracias
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
celinaresb
Miembro Frecuente
Miembro Frecuente
 
Registrado: 12 Jul 2011 12:06
Ubicación: Madrid, España

Re: SOBREESCRIBIR EN UNA BASE DE DATOS

Notapor celinaresb » 27 Dic 2011 14:28

Hola HcFenix!

podrias por favor dar una ojeada a esta nueva pregunta:

macros/urgente-error-t17098.html

Gracias de ante mano! es bastante urgente!
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
celinaresb
Miembro Frecuente
Miembro Frecuente
 
Registrado: 12 Jul 2011 12:06
Ubicación: Madrid, España


Compartir en:
     

  • Anuncio
Manual Excel avanzado

Volver a Macros

¿Quién está conectado?

Usuarios navegando por este Foro: Google [Bot] y 6 invitados