Access - cambio color (por partes) en string

   
Vista:

cambio color (por partes) en string

Publicado por orkkro orkkro@hotmail.com (6 intervenciones) el 19/05/2017 14:21:52
Saludos a todos y gracias por vuestra dedicación

Soy autodidacta a distancia y estando en Honduras destinado por trabajo aprendí "un poquito" gracias a los cursos y foros que subís.... mi agradecimiento es infinito.



Mi pregunta es:

He tomado prestado de Nekkito un trozo de codigo de un programa Calendario y necesito hacer unos canbios:
Se trata d la representación en la celdadell mes, de dos textos que en origen iban en lineas separadas y cerrados con una línea "------------------------" ,


contenidoDia = contenidoDia & .Fields(0).Value & " --> " al que le añado "-->"
que por ejemplo es "JOSE RAMON" & --> &

y esto se encadena con :

contenidoDia = contenidoDia & .Fields(1).Value que por ejemplo es "HACER TAREA TAL" eliminando el salto de linea intermedio

con lo cual mi texto queda " JOSE RAMON --> HACER TAREA TAL"



Mi pregunta es muy básica, no conozco mucho código y he probado varias cosas pero no acuerto.

Necesito que la primera parte "JOSE RAMON" O incluso "JOSE RAMON -->" se represente en Rojo o Bold, y el resto "Hacer tarea Tal" se queda en negro Bold=False

queda en pantalla " JOSE RAMON -->" en rojo y "Hacer tarea Tal" en negro, en la misma linea.


os dejo el trozo del módulo:



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
Public Sub rellenoDatosCalendario(pdc As Date, udc As Date)
        'Compruebo la diferencia entre las fechas "Último dia calendario" (udc) y "Primer día calendario" (pdc)
        'para saber si he ocultado la sexta semana o no. En función del resultado redimensiono mi matriz
 
 
 
    If udc - pdc + 1 <= 35 Then
        ReDim infoDia(1 To 35)
    Else
        ReDim infoDia(1 To 42)
    End If
        'Cojo el valor más alto de la matriz que se haya creado
    maxMatriz = UBound(infoDia)
        'Inicializo el índice de mi matriz infoDia
    i = 1
        'Inicializo el contenido de los datos que contendrá la variable contenidoDia
    contenidoDia = ""
    contenidoDia = ""
        'Inicio un recorrido de las fechas desde el primer día del calendario (pdc) hasta
        'el último día del calendario (udc)
    For iDate = pdc To udc
            'Creo una SQL sobre la tabla TCitas, filtrada por iDate
        miSql = "SELECT TCitas.NomPac, TCitas.MotivoCita" _
            & " FROM TCitas" _
            & " WHERE TCitas.FechCita=#" & Format(iDate, "mm/dd/yy") & "#"
            'Creo un recordset sobre la SQL
        Set rst = CurrentDb.OpenRecordset(miSql)
            'Si no hay registros relleno el elemento i de la matriz infoDia con una cadena vacía
        If rst.RecordCount = 0 Then
            infoDia(i) = ""
        Else
                'Si hay registros los recorro y voy creando los valores que se incluirán
                'en mi matriz infoDia
            With rst
                .MoveFirst
                Do Until .EOF
 
                    contenidoDia = contenidoDia & .Fields(0).Value & " --> "
 
                     'Añado caràcter que me hará de salto de línea en Replace
                    'contenidoDia = contenidoDia & "\"
                    contenidoDia = contenidoDia & .Fields(1).Value
 
 
                        'Añado caràcter que me hará de salto de línea en Replace
                    'contenidoDia = contenidoDia & "\"
                        'Añado una línea separadora
                    'contenidoDia = contenidoDia & "-----------------------------"
                        'Añado caràcter que me hará de salto de línea en Replace
                    contenidoDia = contenidoDia & "\"
                        'Me muevo al siguiente registro[b][b]Reemplace este texto
                    .MoveNext
                Loop
            End With
                'Asigno el valor al elemento i de mi matriz
            infoDia(i) = contenidoDia
        End If
                'Aumento una unidad el índice
            i = i + 1
                'Reinicializo contenidoDia
            contenidoDia = ""
    Next iDate
        'Finalmente, relleno los textbox de FCalendario con los contenidos de la matriz
    For i = 1 To maxMatriz
        For Each ctl In Forms!FCalendario
            If ctl.Name = "txt" & i Then
                ctl.Value = infoDia(i)
                    'Aquí reemplazo la contrabarra con un salto de línea
                ctl.Value = Replace(ctl.Value, "\", vbCrLf)
            End If
        Next ctl
    Next i
        'Elimino la matriz
    Erase infoDia
        'Llamo al procedimiento marcaFestivos()
    Call marcaFestivos(pdc, udc)
End Sub


Atentamente;

Jose Caros
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

cambio color (por partes) en string

Publicado por Anonimo (682 intervenciones) el 19/05/2017 23:14:01
En versiones actuales de Access eso se puede hacer si se le activa al campo su propiedad 'texto enriquecido', las modificaciones se pueden hacer con el editor que aparece al seleccionar el objeto o de forma mas avanzada (con una sintaxis similar a HTML).
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

cambio color (por partes) en string

Publicado por orkkro (6 intervenciones) el 23/05/2017 11:01:15
Anonimo, muchas gracias por la pista que me das, es buena información para no perder el tiempo buscando el código, lamentablemente no tengo ni idea de HTML, intentaré encontrarlo por ese camino.
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