2016-04-12 5 views
1

Ich erstelle eine ODBC-Verbindung, um eine MySQL-Datenbank direkt aus einer Excel-Datei abzufragen. Es ist eine ziemlich komplexe Abfrage mit ungefähr 60 SELECT-Anweisungen, die sowohl für die ursprüngliche MySQL-Datenbank als auch für die Verbindung von Microsoft Query perfekt ist. Jedoch, wenn ich das Ergebnis auf einem Excel-Sheet veröffentlichen, es alle Spalten mit Ausnahme von zwei zeigt (beide haben einen ## < - THIS !!! Kommentar)Excel mysql nicht alle lesen select-Anweisung

select 
    nom_client as Custname 
    ,case when locate('/',nom_voyageur) > 0 
     then substring(nom_voyageur,1,locate('/',nom_voyageur)-1) 
     else nom_voyageur end as Lastname 
    ,case when locate('/',nom_voyageur) > 0 
     then substring(nom_voyageur,locate('/',nom_voyageur) + 1, length(nom_voyageur)-locate('/',nom_voyageur)) 
     else '' end as Firstname 
    ,zone_stat_1 as Empcode 
    ,concat(substring(booker,locate(' ',booker) + 1, length(booker)-locate(' ',booker)),' ',substring(booker,1,locate(' ',booker)-1)) as Booker 
    ,zone_stat_3 as 'Euronext TAF Approver level 2' 
    ,'' as "Trip Reason" 
    ,prestation_name as Vendor 
    ,departure_date as Servicedate 
    ,'' as Savings 
    ,advance_purchase as Advpurchgroup 
    , tickets_number as Ticketcount 
    , '' as Triplength 
    ,'' as 'Class of Service' 
    ,case Activite when 1 then 'Rail' 
     when 2 then 'Hotel' 
     when 3 then 'Maritime' 
     when 4 then 'Fees/Regulations' 
     when 5 then 'Air' 
     when 6 then 'Frais' 
     when 7 then 'Visa/Shipments/Subscriptions/ESTA' end as Producttype 
    ,case when length(trajet_origine_destination) > length(replace(trajet_origine_destination,'/','')) 
     then substring(trajet_origine_destination,1,locate('/',trajet_origine_destination)-1) 
     else trajet_origine_destination end as 'Origin Cityname' 
    ,case when length(trajet_origine_destination) > length(replace(trajet_origine_destination,'/','')) 
     then substring(trajet_origine_destination,locate('/',trajet_origine_destination) + 1, length(trajet_origine_destination)-locate('/',trajet_origine_destination)) 
     else trajet_origine_destination end as 'Destination Cityname' 
    ,'Invoice' as Fop 
    ,'APInv' as 'Journal Name' 
    ,Invoice_date as 'Invoice Date' 
    ,'Vendor' as 'Account Type' 
    ,'' as LCOA 
    ,640139 as 'Main Account' 
    ,Zone_stat_2 as 'Cost Center' 
    ,'' as Project 
    ,'' as MarketSegment 
    ,'' as Custumer 
    ,'FAES000528' as Supplier 
    ,'' as Intercompany 
    ,'' as Product 
    ,'' as Dim9 
    ,'' as Dim10 
    ,'Ledger' as OffAccountType 
    ,'' as OffMainAccount 
    ,'' as OffsetLCOA 
    ,'' as OffCostCenter 
    ,'' as OffProject 
    ,'' as OffMarketSegment 
    ,'' as OffCustomer 
    ,'' as OffSupplier 
    ,'' as OffIntercompany 
    ,'' as OffProduct 
    ,'' as OffDim9 
    ,'' as OffDim10 
    ,concat('FCM-Invoice ',numero_facture,' - ',prestation_name,' - ',substring(nom_voyageur,1,locate('/',nom_voyageur)-1),' ',substring(nom_voyageur,locate('/',nom_voyageur) + 1, length(nom_voyageur)-locate('/',nom_voyageur))) as Description ## <-- THIS!!! 
    ,'EUR' as CurrencyCode 
    ,case when Montant_vente > 0 then Montant_vente else 0 end as AmountCurDebit 
    ,case when Montant_vente < 0 then Montant_vente*-1 else 0 end as AmountCurCredit 
    ,case when Montant_vente > 0 then Montant_vente else 0 end as FunctionalCUrDebit 
    ,case when Montant_vente < 0 then Montant_vente*-1 else 0 end as FunctionalCurCredit 
    ,'AP Posting' as PostingProfile 
    ,'Electronic' as PaymMode 
    ,'INMEDIATE' as Payment 
    ,concat(year(now()),'-',if(month(now())<10,concat('0',month(now())),month(now())),'-13') as Due ## <-- THIS!!! 
    ,'AP_DOM' as 'TaxGroup' 
    ,case activite when 6 then 'HIGH_S' else 'EXEMPT' end as TaxItemGroup 
    ,'' as DocumentNum 
    ,Invoice_date as DocumentDate 
    ,numero_facture as Invoice 
    ,'' as Prepayment 
    ,'' TaxCode 
    ,'' ExchRate 
    ,'No' as ReverseEntry 
    ,'' as ReverseDate 
    ,'FAES' as Company 
    ,'FAES' as OffsetCompany 
from extrait_sapeig_stat e 
where mot_dir_client = 'ETT' 
    and invoice_year = year(date_add(now(),Interval -1 month)) and invoice_month = month(date_add(now(),Interval -1 month)) 
    and activite != 11 
order by invoice_date, numero_facture; 

In anderen zu vereinfachen, das sind die Fehlfunktion Aussagen

',substring(nom_voyageur,locate('/',nom_voyageur) + 1, length(nom_voyageur)-locate('/',nom_voyageur))) as Description ## <-- THIS!!! 
,concat(year(now()),'-',if(month(now())<10,concat('0',month(now())),month(now())),'-13') as Due ## <-- THIS!!! 

Ich habe keine Ahnung, warum sie versagen. Ich habe bereits längere Anweisungen in der gleichen Abfrage, und die Funktion concat() funktioniert auch schon. Ich gehe davon aus, dass es ein Problem mit Anweisungen mit mehr als 3 eingerückten Funktionen gibt, aber ich bin mir nicht sicher.

Wenn einer von euch eine jede Vorstellung davon, warum dies fehlschlägt, ist es mir viel

Richtiges Ergebnis in Microsoft Query

Microsoft Query

Beschreibung Spalten desappeared in Excel-Tabelle

helfen

Excel Sheet

+0

ich das Problem gefunden !, –

+0

ich das Problem gefunden !, ich muss explizit konvertieren alle Werte in Strings innerhalb der concat-Funktionen. jetzt habe ich dieses SELECT concat ('FCM-Rechnung', ersetzen (Format (numero_facture, 0), '', ''), '-', prestation_name, '-', substring (nom_voyageur, 1, locate ('/', nom_voyageur) -1), '', Teilzeichenfolge (nom_voyageur, locate ('/', nom_voyageur) + 1, Länge (nom_voyageur) -locate ('/', nom_voyageur))) als Beschreibung, date_format (jetzt(), '% Y-% m-13') als fällig von extrait_sapeig_stat e –

Antwort

0

Ich habe das Problem gefunden !, Ich muss explizit alle Werte in Strings innerhalb der Concat-Funktionen konvertieren.

jetzt habe ich diese

SELECT concat('FCM-Invoice ',replace(format(numero_facture,0),',',''),' - ',prestation_name,' - ',substring(nom_voyageur,1,locate('/',nom_voyageur)-1),' ',substring(nom_voyageur,locate('/',nom_voyageur) + 1, length(nom_voyageur)-locate('/',nom_voyageur))) as description, 
date_format(now(),'%Y-%m-13') as due 
from extrait_sapeig_stat e 
0

Warum konvertieren Sie das nicht in MSAccess und danach conver t MSAccess zu MySQL