Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

SQL reprendre une partie du nom de la table

8 réponses
Avatar
le Nordiste
Bonjour,


Dans ma requ=EAte j'=E9cris :
=85right(uneFa,4) AS NumFa, =85FROM [Txt_1234_toto_tata] AS uneFa
j'aimerais obtenir dans le champ NumFa les 4 caract=E8res de droite de
nom de la table,; les 5 de gauche aussi d'ailleurs, comme les 3 =E0
compter del la 5=E9me position.


j'utilise l'alias "uneFa" pour la clause FROM, car je dois changer
plusieurs fois de nom de table.

Merci de votre aide

8 réponses

Avatar
Michel__D
Bonjour,

le Nordiste a écrit :
Bonjour,


Dans ma requête j'écris :
…right(uneFa,4) AS NumFa, …FROM [Txt_1234_toto_tata] AS uneFa
j'aimerais obtenir dans le champ NumFa les 4 caractères de droite de
nom de la table,; les 5 de gauche aussi d'ailleurs, comme les 3 à
compter del la 5éme position.


j'utilise l'alias "uneFa" pour la clause FROM, car je dois changer
plusieurs fois de nom de table.

Merci de votre aide



Vu que la donnée source est fixe ("AS uneFa") tu peux mettre directement
la chaîne de 4 caractères, ce qui donne :

SELECT ..., "uneF" AS NumFa FROM [Txt_1234_toto_tata] AS uneFa
Avatar
le Nordiste
Michel bonjour,


Vu que la donnée source est fixe ("AS uneFa") tu peux mettre directemen t
  la chaîne de 4 caractères, ce qui donne :

SELECT ..., "uneF" AS NumFa FROM [Txt_1234_toto_tata] AS uneFa



Je me suis mal exprimé peut étre:
je désire mettre dans le champ NumFa 4 caractéres extraits de
[Txt_1234_toto_tata]
en faisant si possible un Left() , un right() ou un Mid ()

merci pour ton aide
Avatar
Michel__D
Bonjour,

le Nordiste a écrit :
Michel bonjour,


Vu que la donnée source est fixe ("AS uneFa") tu peux mettre directement
la chaîne de 4 caractères, ce qui donne :

SELECT ..., "uneF" AS NumFa FROM [Txt_1234_toto_tata] AS uneFa



Je me suis mal exprimé peut étre:
je désire mettre dans le champ NumFa 4 caractéres extraits de
[Txt_1234_toto_tata]
en faisant si possible un Left() , un right() ou un Mid ()

merci pour ton aide



Je comprends toujours pas pourquoi tu ne fixe pas ta valeur du champ
puisque la source ne varie pas ou quelle se trouve.

PS:Donne la raison pour laquelle tu veux absolument utiliser un Left, ...
Avatar
le Nordiste
Bonjour Michel

PS:Donne la raison pour laquelle tu veux absolument utiliser un Left, ...



Ma requête sert 2 fois -voire n- de suite pour remplir une table
T_destination.
À chaque fois le nom de la table liée T_source, change bien entendue
de nom;
mais ces noms respectent un format donné
CpteFa_NumFa_AAAAMMJ_xxxxx.txt;
je dois récupérer dans T_destination CpteFa, NumFa, AAAAMMJJ converti
en date dans 3 champs distincts.

Mon idée est de n'avoir qu'à SAISIR UNE FOIS le nom de T_source,
puisque tout y est, pour chaque T_source bien entendu.

Ma requête etant lancée par VB, je peux saisir le nom de T_source.
En concaténant le texte de la requête et le nom de T_source dans la
clause FROM en utilisant un alias
Je pense pouvoir remonter T_source dans la clause SELECT
[alias_T_source].[champ_1], …
et extraire plus loin left(alias_T_source;6) as Comptefacturation, …

merci de me consacrer quelques minutes, c'est bien sympa de pouvoir
étre aidé.
le Nordiste
Avatar
Michel__D
Bonjour,

le Nordiste a écrit :
Bonjour Michel

PS:Donne la raison pour laquelle tu veux absolument utiliser un Left, ...



Ma requête sert 2 fois -voire n- de suite pour remplir une table
T_destination.
À chaque fois le nom de la table liée T_source, change bien entendue
de nom;
mais ces noms respectent un format donné
CpteFa_NumFa_AAAAMMJ_xxxxx.txt;
je dois récupérer dans T_destination CpteFa, NumFa, AAAAMMJJ converti
en date dans 3 champs distincts.

Mon idée est de n'avoir qu'à SAISIR UNE FOIS le nom de T_source,
puisque tout y est, pour chaque T_source bien entendu.

Ma requête etant lancée par VB, je peux saisir le nom de T_source.
En concaténant le texte de la requête et le nom de T_source dans la
clause FROM en utilisant un alias
Je pense pouvoir remonter T_source dans la clause SELECT
[alias_T_source].[champ_1], …
et extraire plus loin left(alias_T_source;6) as Comptefacturation, …

merci de me consacrer quelques minutes, c'est bien sympa de pouvoir
étre aidé.
le Nordiste



Si le SQL d'une requête doit être dynamique sous VB, il vaut mieux dans
ce cas manipuler la propriété SQL de l'objet relatif à la requête.
Avatar
le Nordiste
bonjour Michel,


Si le SQL d'une requête doit être dynamique sous VB, il vaut mieux da ns
  ce cas manipuler la propriété SQL de l'objet relatif à la requ ête.- Masquer le texte des messages précédents -



Ici je décroche, qu'est ce que la propriètè SQL de l'objet relatif à
la requête ?
Avatar
Michel__D
Bonjour,

le Nordiste a écrit :
bonjour Michel,


Si le SQL d'une requête doit être dynamique sous VB, il vaut mieux dans
ce cas manipuler la propriété SQL de l'objet relatif à la requête.



Ici je décroche, qu'est ce que la propriètè SQL de l'objet relatif à
la requête ?



Avec ce code tu devrais mieux comprendre :

Dim oDb As DAO.Database
Dim oQry As DAO.QueryDef

Set oDb = CurrentDb()
Set oQry = oDb.QueryDefs("LeNomDeLaRequete")
MsgBox oQry.SQL
Set oQry = Nothing
Set oDb = Nothing

Ici j'affiche le contenu SQL de la requête existante "LeNomDeLaRequete"
mais tu peux aussi modifier le SQL de cette requête via par exemple :

oQry.SQL = "SELECT * FROM LaTable;"

ou autre exemple

sChamp = "nom, premon"
sTable = "LaTable"
oQry.SQL = "SELECT " & sChamp & " FROM " & sTable & ";"

C'est plus clair.
Avatar
le Nordiste
Bonjour Michel,


C'est plus clair. OUI



Ai je bien compris : la propriètè SQL de l'objet relatif à la requê te
est le "texte SQL" de la requête.

Le texte SQL/proprièté SQL de ma requête étant assez long,
pour ne pas répéter n fois, autant qu'il y a de champs, le nom d ela
table par exemple,
j'avais opté pour un ALIAS de celle ci pour n'avoir à mettre à jour
que le nom d etable dans la clause FROM.

Merci de tes explications Michel,
passe un bon WE

le Nordiste