Foros del Web » Programación para mayores de 30 ;) » Programación General »

ayuda con macro

Estas en el tema de ayuda con macro en el foro de Programación General en Foros del Web. Hola , buenas tardes.. amigos quisiera ver si alguien sabe como continuar un numero de folio apartir de una tabla en la base de datos ...
  #1 (permalink)  
Antiguo 11/11/2009, 18:29
 
Fecha de Ingreso: noviembre-2009
Mensajes: 6
Antigüedad: 14 años, 5 meses
Puntos: 0
ayuda con macro

Hola , buenas tardes..

amigos quisiera ver si alguien sabe como continuar un numero de folio apartir de una tabla en la base de datos en sql...

el ultimo numero de folio que tengo es

SF90000647, supongo que la SF se concatena, necesito el codigo en visual basic...

esque veran estoy trabajando en una macro que por cada correo que llegue se genere un nuevo folio apartir de ese ultimo y se almacene en una tabla de la base de datos...

ayuda porfas !!
gracias de antemano
  #2 (permalink)  
Antiguo 11/11/2009, 21:08
Avatar de 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

Hola,

Cita:
Iniciado por lucy_D Ver Mensaje
... SF90000647, supongo que la SF se concatena, necesito el codigo en visual basic...
... esque veran estoy trabajando en una macro que por cada correo que llegue se genere un nuevo folio apartir de ese ultimo ...
¿Visual Basic? ¿Macro? ... Me imagino será Visual Basic Script.
¿Correo? ... Me imagino será Outlook o algo así.
¿Base de datos? ... ¿Cual?

Posiblemente ...

Código:
Dim UltimoFolio
UltimoFolio = "SF90000647"

Function SiguienteFolio(Numero)
	Dim str, num
	str = Mid(Numero, 1, 2)
	num = CLng(Mid(Numero, 3))
	SiguienteFolio = str & (num + 1)
End Function

Rem WScript.echo SiguienteFolio(UltimoFolio)
Rem Debug.WriteLine(SiguienteFolio(UltimoFolio))
Saludos,
  #3 (permalink)  
Antiguo 13/11/2009, 16:51
 
Fecha de Ingreso: noviembre-2009
Mensajes: 6
Antigüedad: 14 años, 5 meses
Puntos: 0
Sonrisa Respuesta: ayuda con macro

Hola primeramente una disculpa por no haberme explicado bien mira asi esta la cosa ... si definitivamente el correo utilizado es outlook
y la macro la estoy haciendo en el editor de visual basic que viene incluida en outlook , necesito que me sigua contando los folios apartir del ultimo que es ese
"SF90000647" y se alacena en la tabla de la base de datos en la primera celda...
que sea consecutivo el 90000647,90000648,90000649 etc.. con las dos iniciales al principio que son "SF"

Te agradecere la ayuda y gracias por tu tiempo . :)
  #4 (permalink)  
Antiguo 13/11/2009, 18:33
Avatar de 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,
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 01:20.