FORUMS PROFESSIONNELS
WINDEV
,
WEBDEV
et
WINDEV Mobile
Accueil
|
Messages récents
|
Connexion
|
Déconnexion
|
Français
Accueil
→
WINDEV (précédentes versions)
→
[WD28 ] RECHERCHE COMPLEXE DANS UN TABLEAU DE STRUCTURE
[WD28 ] RECHERCHE COMPLEXE DANS UN TABLEAU DE STRUCTURE
Débuté par Diamondsoftware, 22 fév. 2024 11:30 - 1 réponse
Connectez-vous…
Diamondsoftware
#1
Membre enregistré
143 messages
Popularité : +6 (8 votes)
Posté le 22 février 2024 - 11:30
Bonjour à tous.
Je seche sur un probleme de tableau.
Je fais une comparaison entre deux tables memoires contenant certaines informations communes.
Voila le code simplifie; j'ai enleve ce qui n'est pas necessaire a la comprehension.
J'ai un tableau dynamique de structure au format suivant:
AnalyticsRecordForCache est une Structure
DateEntry est une chaîne
Description est une chaîne
DocNumber est une chaîne
Value est un monétaire
Categorie1 est une chaîne
Categorie2 est une chaîne
FIN
Je rempli le tableau avec une boucle qui lit une table memoire, de ce coté la , pas de soucis, ce se rempli.
MyCacheOfAnalyticsRecords est un tableau AnalyticsRecordForCache dynamique
MyCacheOfAnalyticsOneRecord est un AnalyticsRecordForCache
ONeOperation est une Structure
IdREc est un entier sur 8 octets
Date est une chaîne
Description est une chaîne
IdRecAccountIn est un entier sur 8 octets
IdRecAccountOUT est un entier sur 8 octets
NameAccountIN est une chaîne
NameAccountOUT est une chaîne
CreditValueUSD est un monétaire
DebitValueUSD est un monétaire
DocNumber est une chaîne
FIN
OperationInuse est une ONeOperation
// remplissage du tableau a partir d'une table memoire
POUR i=1 À Localvar_nbLineTable
MyCacheOfAnalyticsOneRecord.Value=MYIMPORTScreen_TABLE_ENTRIESFORANALYTIC.COL_VALUE_USD[i]
MyCacheOfAnalyticsOneRecord.DateEntry=MYIMPORTScreen_TABLE_ENTRIESFORANALYTIC.COL_DATE[i]
MyCacheOfAnalyticsOneRecord.Description=MYIMPORTScreen_TABLE_ENTRIESFORANALYTIC.COL_DESCRIPTION[i]
MyCacheOfAnalyticsOneRecord.DocNumber=MYIMPORTScreen_TABLE_ENTRIESFORANALYTIC.COL_DOCNUMBER[i]
MyCacheOfAnalyticsOneRecord.Categorie1=MYIMPORTScreen_TABLE_ENTRIESFORANALYTIC.COL_CATEGORY1[i]
MyCacheOfAnalyticsOneRecord.Categorie2=MYIMPORTScreen_TABLE_ENTRIESFORANALYTIC.COL_CATEGORY2[i]
TableauAjoute(MyCacheOfAnalyticsRecords,MyCacheOfAnalyticsOneRecord)
FIN
// apres dans une autre boucle je fait une recherche dans le tableau a partir d'elements d'une autre table.
// A partir d'une autre table je fais une recherche de correspondance
Localvar_nbLineTable=TableOccurrence(MYIMPORTScreen_TABLE_ENTRIES)
POUR i=1 À Localvar_nbLineTable
OperationInuse.Date=MYIMPORTScreen_TABLE_ENTRIES.COL_DATE[i]
OperationInuse.Description=MYIMPORTScreen_TABLE_ENTRIES.COL_DESCRIPTION[i]
OperationInuse.IdREc=MYIMPORTScreen_TABLE_ENTRIES.COL_IDREC[i]
OperationInuse.IdRecAccountIn=MYIMPORTScreen_TABLE_ENTRIES.COL_IDREC_ACCOUNT_FROM[i]
OperationInuse.IdRecAccountOUT=MYIMPORTScreen_TABLE_ENTRIES.COL_IDREC_ACCOUNT_TO[i]
OperationInuse.NameAccountIN=MYIMPORTScreen_TABLE_ENTRIES.COL_ACCOUNT_FROM[i]
OperationInuse.NameAccountOUT=MYIMPORTScreen_TABLE_ENTRIES.COL_ACCOUNT_TO[i]
OperationInuse.CreditValueUSD=MYIMPORTScreen_TABLE_ENTRIES.COL_CREDIT_VALUE_USD[i]
OperationInuse.DebitValueUSD=MYIMPORTScreen_TABLE_ENTRIES.COL_DEBIT_VALUE_USD[i]
OperationInuse.DocNumber=MYIMPORTScreen_TABLE_ENTRIES.COL_DOCUMENTNR[i]
SI Abs(OperationInuse.CreditValueUSD)>0 ALORS
Localvar_ValeurUSD=Abs(OperationInuse.CreditValueUSD)
SINON
SI Abs(OperationInuse.DebitValueUSD)>0 ALORS
Localvar_ValeurUSD=Abs(OperationInuse.DebitValueUSD)
FIN
FIN
Localvar_LineNoINCache=TableauCherche(MyCacheOfAnalyticsRecords,tcLinéaire,"Value;DocNumber;Date;Description",Localva r_ValeurUSD,OperationInuse.DocNumber,OperationInuse.Date,OperationInuse.Description,1)
SI Localvar_LineNoINCache>0 ALORS
// Correspondance trouvee,
// TRAITEMENT...
stop
//
FIN
FIN
Mon probleme:
Le tableauCherche me donne toujours -1 , donc il ne trouve jamais, ce qui n'est pas possible au niveau des datas, puisque par une autre methode plus lente (usage de table memoire) ca marche , tres lent mais ca marche.
Merci d'avance pour vos reponses et aide.
Salutations
Stephane D.
--
Stephane Dujourdy
Softwares made on measure and computing advice since 1980
Softwares made on measure for Diamond and Luxe sector since 1999
info@diamondsoftware.net
http://www.diamondsoftware.net
Signaler
0
0
Diamondsoftware
#2
Membre enregistré
143 messages
Popularité : +6 (8 votes)
Posté le 22 février 2024 - 12:02
Petite correction grace a =JBO=
DateEnry a la place de Date dans les parametres de recherche
J'ai corrige dans le code, mais helas ca ne marche toujours pas.
S.
--
Stephane Dujourdy
Softwares made on measure and computing advice since 1980
Softwares made on measure for Diamond and Luxe sector since 1999
info@diamondsoftware.net
http://www.diamondsoftware.net
Signaler
0
0
→ Revenir à WINDEV (précédentes versions)
WINDEV 2024
WEBDEV 2024
WINDEV Mobile 2024
WINDEV (précédentes versions)
WEBDEV (précédentes versions)
WINDEV Mobile (précédentes versions)
Etats & Requêtes
Hors-sujet
Outils
Français
English
Español
Portuguesa
Fermer cette fenêtre
Type de recherche
Uniquement les sujets
Tous les messages
Période de recherche
Date indifférente
Moins d'une heure
Moins de 24 heures
Moins d'une semaine
Moins d'un mois
Moins d'un an
Annuler
Aperçu de votre message
Ajouter une image
Importer une image depuis une URL
Envoyer une image depuis un fichier de votre disque
Déposez ici un fichier ou cliquez sur "Parcourir..."
ou
Annuler
0%
WLangage
SQL
XML, HTML
JAVA, Javascript
Texte