Ver Mensaje Individual
  #4 (permalink)  
Antiguo 13/11/2009, 18:33
Avatar de HackmanC
HackmanC
 
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: ayuda con macro

Cita:
Iniciado por lucy_D Ver Mensaje
... y se alacena en la tabla de la base de datos en la primera celda ...
No comprendo, las bases de datos almacenan datos en filas o registros, en cada uno de estos hay varios campos, no tengo ni idea que puede significar 'celda' en un contexto que no sea Excel u Hoja Electrónica u otros.

Cita:
Iniciado por lucy_D Ver Mensaje
... que sea consecutivo el 90000647,90000648,90000649 etc.. con las dos iniciales al principio que son "SF" ...
Posiblemente te sea de alguna ayuda,

Código:
Option Explicit

Private Sub Application_NewMail()
    Call Process
End Sub

Private Sub Process()
    Debug.Print "Processing new mail ..."
    
    Dim objDatabase As New ADODB.Connection
    Dim objRecordset As New ADODB.Recordset
    Dim objCommand As New ADODB.Command
    Dim strLastValue As String
    
    On Error GoTo eHand
    objDatabase.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\data.mdb;Persist Security Info=False"
    objRecordset.Open "SELECT TOP 1 IDMessage FROM Tabla1 ORDER BY IDMessage DESC", objDatabase, adOpenStatic, adLockReadOnly
    
    strLastValue = "SF90000647"
    If Not objRecordset.EOF Then
        objRecordset.MoveFirst
        strLastValue = objRecordset.Fields("IDMessage")
    End If
    strLastValue = SiguienteFolio(strLastValue)
    Debug.Print "Folio : " & strLastValue
    
    objCommand.ActiveConnection = objDatabase
    objCommand.CommandText = "INSERT INTO Tabla1 (IDMessage, Message) VALUES (""" & strLastValue & """, ""Mensaje"")"
    objCommand.CommandType = adCmdText
    objCommand.Execute
    
    objRecordset.Close
    objDatabase.Close
    
    Set objRecordset = Nothing
    Set objDatabase = Nothing
    
    Debug.Print "... done."
    Exit Sub
    
eHand:
    Debug.Print "Ha ocurrido un error al procesar el mensaje de correo." & vbCrLf & _
        Err.Number & " : " & Err.Description
End Sub

Function SiguienteFolio(Numero)
    Dim str, num
    str = Mid(Numero, 1, 2)
    num = CLng(Mid(Numero, 3))
    SiguienteFolio = str & (num + 1)
End Function
El macro abre una base de datos de Access busca el último folio guardado en una tabla denominada Tabla1 con dos campos IDMessage, Message, le aumenta el índice en 1, y guarda un nuevo registro con el nuevo ID.

Problema: funciona porque el SF90000647 tiene SF9 al principio si fuera SF001 el siguiente ID sería SF2, debes acomodarlo a las necesidades específicas. Si tienes alguna duda busca información en MSDN.

Saludos,