2016-03-07 1 views
-1

J'ai trouvé beaucoup de conseils sur la façon de remplir une chaîne dans Access 2010 mais aucun sur la façon de remplir une longueur variable chaîne avec des espaces sur une longueur de chaîne totale prédéterminée.Access 2010: Pad (y) une longueur de chaîne variable (x) à un total prédéterminé de sorte que x + y = 55

Exemple:

Total length = 55, 
if string len = 15, then pad " " x 40 (15+40=55) 
if string len = 35, then pad " " x 20 (35+20=55) etc 

Je pourrais écrire une fonction pour faire cela, mais je veux savoir s'il y a un déjà construit!

+0

Comme il arrive, je veux qu'ils après. Cependant, il y a un autre inconvénient: nous concaténons trois colonnes d'Excel en une seule chaîne, mais nous devons conserver trois pseudo-colonnes pour que PeopleSoft (qui attend une seule chaîne de SalesForce dont nous avons piraté l'entrée) puisse les décomposer trois colonnes à nouveau .. (PAS mon idée) –

Répondre

1

Un peu de maths?

[x] & space(55 - len([x])) 
+0

Impossible de faire ce travail comme fourni .. Je ne sais pas pourquoi (probablement parce que le problème est un peu plus complexe que je l'ai initialement indiqué) et je reviendrai à vous si je l'obtiens travailler ou quand j'ai épuisé toutes les avenues. Mais vraiment je voulais un mot, comme PAD() ou SPACE() ou quelque chose de rapide et facile. Je dois remettre cela à des non-codeurs à un moment donné, écrire un FN est quelque chose que j'aimerais éviter. –

+0

Cette expression doit toujours être tamponnée tant que 'x' a une longueur de <55 caractères. Il n'y a pas de fonction unique pour le faire. (Cela peut * être * fait avec 'LSet' mais c'est une expression qui ne peut pas être utilisée dans une requête) –

+0

Hypothèse: puisque je suis en train de concat'er 3 cols et que certains sont vides, on lui demande de remplir un montant négatif! Par conséquent, il renvoie une erreur. –

0

Il y a une fonction native pour cela:

Dim Total As String 
Dim Content As String 

Total = Space(55) 
Content = "Some Content" 
RSet Total = Content 

Debug.Print Chr(34) & Total & Chr(34) 
' Will return: 
' "Some Content           " 

ou encore plus simple:

Dim Total As String * 55 
Dim Content As String 

Content = "Some Content" 
RSet Total = Content 

Debug.Print Chr(34) & Total & Chr(34) 
' Will return: 
' "Some Content           " 
+0

J'essaie d'éviter d'écrire du code - d'où la recherche d'une fonction prédéfinie ou d'un mot-clé. Merci d'avoir pris le temps de commenter! –

+0

Oh. Effectivement deux lignes de code ... comment peut-on être paresseux? – Gustav

+0

Jouez bien! ; 0P Je travaille avec des comptables ici! –

0
SELECT 
(MyTest.[Name1]) & SPACE(55-LEN(MyTest.[Name1])) + 
(MyTest.[Name2]) & SPACE(55-Nz(LEN(MyTest.[Name2]), 0)) + 
(MyTest.[Name3]) & SPACE(55-LEN(MyTest.[Name3])) 
FROM MyTest;