2009-06-10 5 views
0

J'ai un texte de contrat qui peut changer.Injection d'une valeur dans le texte

Il est actuellement (système non actif) stocké dans un champ de base de données (nous déterminons le texte du contrat à obtenir en utilisant d'autres champs dans la table). Je dois toutefois afficher une date spécifique (basée sur un contrat individuel) dans ce texte.

IE (mais Jan 12, change en fonction du contrat individuel):

bla bla bla ... le 12 janvier 2009 ... bla bla bla

, mais tout le reste dans le texte du contrat est le même.

Je cherche un moyen d'injecter la date dans ce texte. Similaire à .NET

Console.Write("Some text here {0} and some more here", "My text to inject"); 

Y a-t-il quelque chose comme ça? Ou est-ce que je vais devoir diviser le texte en deux champs et juste concaténer?

J'affiche toujours cette information en utilisant Crystal Reports, donc si je peux injecter les données via Crystal, alors c'est bien. J'utilise Crystal Reports, SQL Server 2005 et VB.net.

Répondre

1

Vous pouvez utiliser une "chaîne réservée" (telle que "{0}") dans le cadre du contrat, puis effectuer un remplacement après avoir lu dans la base de données.

S'il n'y a pas d'option pour cette chaîne réservée (par exemple, si le contrat peut contenir tout type de caractères de chaîne dans une séquence, que je trouve peu probable), alors vous aurez probablement besoin de diviser en 2 champs de texte

1

Avez-vous essayé de placer un marqueur de texte comme le {0} ci-dessus qui peut être remplacé dans le code de Crystal Reports?

1

Vous pouvez créer un champ de formule et y concaténer votre texte.

Si les données sont stockées dans la base de données, le texte de la formule devrait ressembler à ceci:

"Some static text " & totext({yourRecord.yourDateField}, "yyyy") 

Ou vous pouvez fournir comme paramètre avant de vous montrer le rapport:

Dim parameterValue As New CrystalDecisions.Shared.ParameterDiscreteValue 
    value.Value = yourDate 
    Dim parameter As New CrystalDecisions.Shared.ParameterField 
    parameter.ParameterFieldName = "MyParam" 
    parameter.CurrentValues.Add(value) 
    parameter.HasCurrentValue = True 
    Me.CrystalReportViewer1.ReportSource = rapport 
    Me.CrystalReportViewer1.ParameterFieldInfo.Clear() 
    Me.CrystalReportViewer1.ParameterFieldInfo.Add(parameter) 

Ensuite, le texte de la formule devrait ressembler à ceci:

"some static text " & {?MyParam} 
0

Je suppose que vous avez une source de données connectée à votre rapport t. Vous pouvez faire glisser le champ de la liste déroulante de l'explorateur de base de données à l'endroit où il devrait apparaître. De cette façon, chaque fois que le rapport est exécuté, le texte correct sera toujours affiché.

Questions connexes