Recherchez une chaîne dans un fichier avant de joindre des tables.J'ouvre 2 fichiers Excel. J'essaie de joindre des tables seulement si la liste contient choix. Comment puis-je y parvenir?
//Accept Product input from user and save it in a text file
R = Open("Choice.txt",
Labels(0),
Columns(
C = Character(12);
)
);
Choice = {};
Choice = R:C[1];
//Open master data list
U = Open("Volume.csv","invisible");
T = Open("List.csv","invisible");
dt = Current data table();
Column_List = dt << Get Column Names("String");
for(i = 1, i<= NItems(Column_List),i++,
if(contains(Choice,Column_List[i]),
U = Data Table( "Volume" ) <<
Join(
With( Data Table( "List" ) ),
Merge Same Name Columns,
By Matching Columns( :number = :number ),
Drop multiples( 0, 0 ),
Include Nonmatches( 0, 0 ),
Preserve main table order( 1 ),
Output Table( "Joined_With_List" )
);
);
);
Re: Recherchez une chaîne dans un fichier avant de joindre des tables.Marche parfaitement!
Merci beaucoup
Re: Recherchez une chaîne dans un fichier avant de joindre des tables.Est-ce ce que vous recherchez? Si non, alors je ne comprends pas ce que vous cherchez
Names Default To Here( 1 );
// Open comma separated files
dtList = Open( "<THE path="" to="" the="" list="" file="">\list.csv" );
dtVolume = Open( "<THE path="" to="" the="" volume="" file="">\volume.csv" );
// Read in the choice value
choice = Load Text File( "C:\Users\txjim\Documents\choice.txt" );
// Find out if choice is in the List data table and if so,
// join the tables. If not, then set the Volume data table
// to be the processing data table.
If( Contains( dtList:Company << get values, choice ),
dtProcess = dtVolume << Join(
With( dtList ),
Merge Same Name Columns,
Match Flag( 0 ),
By Matching Columns( :Product Type = :Product Type ),
Drop multiples( 0, 0 ),
Include Nonmatches( 0, 0 ),
Preserve main table order( 1 ),
Output Table( "Process" )
),
dtProcess = dtVolume
);</THE></THE>
Re: Recherchez une chaîne dans un fichier avant de joindre des tables.Merci pour la réponse.Je n'ai pas bien expliqué le problème.Désolé pour cela.
Le fichier de volume est dynamique.Si la variable de choix est présente dans le fichier de liste, je dois joindre les tables Volume et List.Si je n'utilise pas la table Volume comme pour d'autres manipulations.J'ai joint les 3 fichiers.Ce problème ça fait un bout de temps.
Toute aide appréciée.
Re: Recherchez une chaîne dans un fichier avant de joindre des tables.Je pense que le script ci-dessous vous rapprochera de ce que vous voulez. Je n'ai pas le format de votre variable "Choice", je ne pourrais donc pas vraiment tester le code, mais je pense que cela vous fournira une méthode qui vous donnera ce que vous voulez.
//Accept Product input from user and save it in a text file
R = Open( "Choice.txt", Labels( 0 ), Columns( C = Character( 12 ) ) );
Choice = {};
Choice = R:C[1];
//Open master data list
U = Open( "Volume.csv", "invisible" );
T = Open( "List.csv", "invisible" );
// Delete columns from the List data table that are not
// found in the Choice memory variable
Column_List = T << Get Column Names( "String" );
For( i = 1, i <= N Items( Column_List ), i++,
If( Contains( Choice, Column_List[i] ) == 0,
T << Delete Columns( Column_Names[i] )
)
);
newU = U << Join(
With( T ),
Merge Same Name Columns,
By Matching Columns( :number = :number ),
Drop multiples( 0, 0 ),
Include Nonmatches( 0, 0 ),
Preserve main table order( 1 ),
Output Table( "Joined_With_List" )
);