Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1563 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SGBD] dBase, strings, replace et doubles

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[SGBD] dBase, strings, replace et doubles

n°1345050
Arjuna
Aircraft Ident.: F-MBSD
Posté le 12-04-2006 à 15:08:19  profilanswer
 

dBase semble ne pas être typé.
 
En tout cas, dans des champs numériques, je me retrouve avec des chaînes de caractères formattées.
 
Le séparateur de décimales est le point.
 
Mon PC est configuré en américain, donc pas de souci, ça marchait.
 
Puis j'ai eu des problèmes d'oppérabilité avec un autre server, et pour vérifier je suis passé en français. Proutch.
 
Pas grave me dis-je : je vais forcer le thread de mon programme à tourner en "en-us". Ben nan, le drivers MSJET se moque de la culture du thred, ce qui l'intéresse c'est celle du sysème apparement.
 
Pas grave me dis-je : je vais obliger les gens à tourner en français (ça tombe bien, c'est déployé qu'en france), et je vais faire un "CDbl(Replace(champ, '.', ','))" sur mes champs numériques...
 
Bah nan, parceque dBase a bien "Trim()", "CDbl()", "Mid()", mais pas "Replace()" :gun:
 
Bon, je fais comment moi maintenant :sweat:

mood
Publicité
Posté le 12-04-2006 à 15:08:19  profilanswer
 

n°1345096
Arjuna
Aircraft Ident.: F-MBSD
Posté le 12-04-2006 à 15:26:57  profilanswer
 

T'ain de logiciel de merde :o
 
Avant (c'était déjà pas glorieux mais bon) :
 

Code :
  1. cmd.CommandText = "SELECT COMM.CODE_FOURN, four.NOMFOURNI, Sum(COMM.QTE_CMDE), Sum(COMM.PRIX_VENTE*COMM.QTE_CMDE), Sum(comm.px_vte_tht*comm.qte_cmde), Sum(comm.qte_cmde*comm.prix_achat), Sum(comm.px_vte_tht*comm.qte_cmde)-Sum(comm.qte_cmde*comm.prix_achat), round(Sum(comm.qte_cmde*comm.prix_vente)/Sum(comm.qte_cmde*comm.prix_achat), 2) " +
  2.         "FROM PARA INNER JOIN ((COMV INNER JOIN COMM ON COMV.NUMEROCOM = COMM.NUMEROCOM) INNER JOIN four ON COMM.CODE_FOURN = four.CODE_FOURN) ON PARA.MAG_DEFAUT = COMV.MAGASIN " +
  3.         "WHERE (((COMV.DATE_CMDE) Like '%" + d1 + "') AND ((COMM.TYPE_MOUVE)='C') AND ((COMM.TYPE_ARTIC)<>'T') AND ((COMM.ETAT_CMDE) In ('T','E')))" +
  4.         "GROUP BY COMM.CODE_FOURN, four.NOMFOURNI";


 
Après :
 


   cmd.CommandText = "SELECT COMM.CODE_FOURN, four.NOMFOURNI, Sum(CDbl(Trim(Mid(COMM.QTE_CMDE, 1, INSTR(COMM.QTE_CMDE, '.') - 1) + ',' + Mid(COMM.QTE_CMDE, INSTR(COMM.QTE_CMDE, '.') + 1, LEN(COMM.QTE_CMDE) - INSTR(COMM.QTE_CMDE, '.'))))), " +
    "Sum(CDbl(Trim(Mid(COMM.PRIX_VENTE, 1, INSTR(COMM.PRIX_VENTE, '.') - 1) + ',' + Mid(COMM.PRIX_VENTE, INSTR(COMM.PRIX_VENTE, '.') + 1, LEN(COMM.PRIX_VENTE) - INSTR(COMM.PRIX_VENTE, '.'))))*CDbl(Trim(Mid(COMM.QTE_CMDE, 1, INSTR(COMM.QTE_CMDE, '.') - 1) + ',' + Mid(COMM.QTE_CMDE, INSTR(COMM.QTE_CMDE, '.') + 1, LEN(COMM.QTE_CMDE) - INSTR(COMM.QTE_CMDE, '.'))))), " +
    "Sum(CDbl(Trim(Mid(COMM.PX_VTE_THT, 1, INSTR(COMM.PX_VTE_THT, '.') - 1) + ',' + Mid(COMM.PX_VTE_THT, INSTR(COMM.PX_VTE_THT, '.') + 1, LEN(COMM.PX_VTE_THT) - INSTR(COMM.PX_VTE_THT, '.'))))*CDbl(Trim(Mid(COMM.QTE_CMDE, 1, INSTR(COMM.QTE_CMDE, '.') - 1) + ',' + Mid(COMM.QTE_CMDE, INSTR(COMM.QTE_CMDE, '.') + 1, LEN(COMM.QTE_CMDE) - INSTR(COMM.QTE_CMDE, '.'))))), " +
    "Sum(CDbl(Trim(Mid(COMM.QTE_CMDE, 1, INSTR(COMM.QTE_CMDE, '.') - 1) + ',' + Mid(COMM.QTE_CMDE, INSTR(COMM.QTE_CMDE, '.') + 1, LEN(COMM.QTE_CMDE) - INSTR(COMM.QTE_CMDE, '.'))))*CDbl(Trim(Mid(COMM.PRIX_ACHAT, 1, INSTR(COMM.PRIX_ACHAT, '.') - 1) + ',' + Mid(COMM.PRIX_ACHAT, INSTR(COMM.PRIX_ACHAT, '.') + 1, LEN(COMM.PRIX_ACHAT) - INSTR(COMM.PRIX_ACHAT, '.'))))), " +
    "Sum(CDbl(Trim(Mid(COMM.PX_VTE_THT, 1, INSTR(COMM.PX_VTE_THT, '.') - 1) + ',' + Mid(COMM.PX_VTE_THT, INSTR(COMM.PX_VTE_THT, '.') + 1, LEN(COMM.PX_VTE_THT) - INSTR(COMM.PX_VTE_THT, '.'))))*CDbl(Trim(Mid(COMM.QTE_CMDE, 1, INSTR(COMM.QTE_CMDE, '.') - 1) + ',' + Mid(COMM.QTE_CMDE, INSTR(COMM.QTE_CMDE, '.') + 1, LEN(COMM.QTE_CMDE) - INSTR(COMM.QTE_CMDE, '.')))))-" +
    "Sum(CDbl(Trim(Mid(COMM.QTE_CMDE, 1, INSTR(COMM.QTE_CMDE, '.') - 1) + ',' + Mid(COMM.QTE_CMDE, INSTR(COMM.QTE_CMDE, '.') + 1, LEN(COMM.QTE_CMDE) - INSTR(COMM.QTE_CMDE, '.'))))*CDbl(Trim(Mid(COMM.PRIX_ACHAT, 1, INSTR(COMM.PRIX_ACHAT, '.') - 1) + ',' + Mid(COMM.PRIX_ACHAT, INSTR(COMM.PRIX_ACHAT, '.') + 1, LEN(COMM.PRIX_ACHAT) - INSTR(COMM.PRIX_ACHAT, '.'))))), " +
    "round(Sum(CDbl(Trim(Mid(COMM.QTE_CMDE, 1, INSTR(COMM.QTE_CMDE, '.') - 1) + ',' + Mid(COMM.QTE_CMDE, INSTR(COMM.QTE_CMDE, '.') + 1, LEN(COMM.QTE_CMDE) - INSTR(COMM.QTE_CMDE, '.'))))*CDbl(Trim(Mid(COMM.PRIX_VENTE, 1, INSTR(COMM.PRIX_VENTE, '.') - 1) + ',' + Mid(COMM.PRIX_VENTE, INSTR(COMM.PRIX_VENTE, '.') + 1, LEN(COMM.PRIX_VENTE) - INSTR(COMM.PRIX_VENTE, '.')))))/" +
    "Sum(CDbl(Trim(Mid(COMM.QTE_CMDE, 1, INSTR(COMM.QTE_CMDE, '.') - 1) + ',' + Mid(COMM.QTE_CMDE, INSTR(COMM.QTE_CMDE, '.') + 1, LEN(COMM.QTE_CMDE) - INSTR(COMM.QTE_CMDE, '.'))))*CDbl(Trim(Mid(COMM.PRIX_ACHAT, 1, INSTR(COMM.PRIX_ACHAT, '.') - 1) + ',' + Mid(COMM.PRIX_ACHAT, INSTR(COMM.PRIX_ACHAT, '.') + 1, LEN(COMM.PRIX_ACHAT) - INSTR(COMM.PRIX_ACHAT, '.'))))), 2) " +
    "FROM PARA INNER JOIN ((COMV INNER JOIN COMM ON COMV.NUMEROCOM = COMM.NUMEROCOM) INNER JOIN four ON COMM.CODE_FOURN = four.CODE_FOURN) ON PARA.MAG_DEFAUT = COMV.MAGASIN " +
    "WHERE (((COMV.DATE_CMDE) Like '%" + d1 + "') AND ((COMM.TYPE_MOUVE)='C') AND ((COMM.TYPE_ARTIC)<>'T') AND ((COMM.ETAT_CMDE) In ('T','E')))" +
    "GROUP BY COMM.CODE_FOURN, four.NOMFOURNI";


 
On va pas parler des performances hein :o

n°1345100
WhyMe
HFR ? Nan, connais pas ...
Posté le 12-04-2006 à 15:29:14  profilanswer
 

Oulalah c'est de la requête méga optimized çà !!! :D
En + c'est super simple à lire, c'est pratique pour debugger :D

n°1345168
Arjuna
Aircraft Ident.: F-MBSD
Posté le 12-04-2006 à 16:04:44  profilanswer
 

Tu m'étonnes :sweat:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SGBD] dBase, strings, replace et doubles

 

Sujets relatifs
[SGBD] Base de données "embarquée" avec fonctions de recherche texte[SGBD] Lire des fichiers dBase qui n'ont pas l'extension DBF
[SGBD/SQL] Oracle : PL/SQL, problème tout conclasse de connexion SGBD mysql en dll (.so) sous linux
[dBase III] Jointures ?SGBD table avec des trous
[SGBD] Voilà pourquoi je n'aime pas la syntaxe SQL 92[SGBD] AVG d'un COUNT euh...
REPLACE d'un caractère en VB ??? 
Plus de sujets relatifs à : [SGBD] dBase, strings, replace et doubles


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR