Newsgroup: it.comp.appl.access
Titolo: Esercizio: sostituzione caratteri (con eccezioni) in codice SQL

Ho trovato un "nuovo" sito che per le tabelle di SAP mi propone una query 
preconfezionata che reputo migliore di quella del sito che usavo 
precedentemente
 
 
quella "vecchia" la prendevo qui:
 
SAP Business One 9.3 module OQUT table definitions
http://www.saptables.net/?schema=BusinessOne9.3&table=oqut
 
 
SELECT 
DocEntry, DocNum, DocType, CANCELED, Handwrtten, Printed, DocStatus, 
[cut]
CtActTax, CtActTaxFC, CtActTaxSC 
FROM OQUT
 
in pratica mi elenca brutalmente i campi con il loro nome, spesso criptico
 
 
Quella "nuova" è un passo avanti:
 
OQUT - Sales Quotation - 
biuan.com
 SDK Developer - SAP® Business ONE (SBO)
https://biuan.com/OQUT
 
 
SELECT
   OQUT.DocEntry AS 'Internal Number', 
   OQUT.DocNum AS 'Document Number', 
   OQUT.DocType AS 'Document Type', 
   OQUT.CANCELED AS 'Canceled', 
   OQUT.Handwrtten AS 'Manual Numbering', 
[agatino]
   OQUT.SplitTax AS 'Split Payment Tax', 
   OQUT.SplitTaxFC AS 'Split Payment Tax FC', 
   OQUT.SplitTaxSC AS 'Split Payment Tax SC'
FROM OQUT AS OQUT	
 
 
come vedete mi mette un Alias, che chiarisce meglio il contenuto del campo
 
 
ora, il problema:
 
MS SQL Server Management Studio utilizza gli apici '...' per identificare 
un alias ma ANCHE per un testo, solo che per un campo della query qui sopra 
questi personaggi hanno usato un apice all'interno dell'alias stesso; ecco 
le righe incriminate:
 
   OQUT.ExptVAtFC AS 'WTax Exempt VAT Amount (FC)', 
   OQUT.LYPmtAt AS 'Last Year's Payments', 
   OQUT.LYPmtAtSC AS 'Last Years Payments (SC)', 
 
 
notare quella in mezzo: l'alias (senza apici di delimitazione) è Last 
Year's Payments
 
quell'apice dopo Year mi sballa tutto il resto
 
ok, basta eliminarlo e tutto torna a posto, ovvio
 
però, dato che posso usare anche le parentesi quadre [...] per delimitare 
l'alias di un campo, sarebbe bello poter elaborare il testo copiato dal 
sito in modo da trasformare gli apici di inizio alias in [ parentesi quadra 
aperta e quelli di fine alias in ] parentesi quadra chiusa
 
 
le stesse istruzioni, messe così
 
   OQUT.ExptVAtFC AS [WTax Exempt VAT Amount (FC)], 
   OQUT.LYPmtAt AS [Last Year's Payments], 
   OQUT.LYPmtAtSC AS [Last Years Payments (SC)], 
 
funzionano egregiamente
 
idee e suggerimenti?
 
grazie
 
-- 
/-\ /\/\ /\/\ /-\ /\/\ /\/\ /-\ T /-\
-=- -=- -=- -=- -=- -=- -=- -=- - -=-
........... [ al lavoro ] ...........

 Ho trovato un "nuovo" sito che per le tabelle di SAP mi propone una query
 
 
 
 >     OQUT.ExptVAtFC AS 'WTax Exempt VAT Amount (FC)',
 >     OQUT.LYPmtAt AS 'Last Year's Payments',
 >     OQUT.LYPmtAtSC AS 'Last Years Payments (SC)',
 
 
 
se l'apice di inizio ha sempre prima uno spazio e quello finale è sempre 
seguito da una virgola te la cavi con due replace
che fanno lo scambio
 
" '" con "["
e
"'," con "]"
 
mentre gli apici interni non avendo spazi e virgole dopo non vengono toccati
se così  non fosse...bisogna pensare ad altro
tipo sfruttare instr
 
per calcolare la posizione del primo apice da sinistra e sostituirlo con [
calcolare la posizione del primo apice da destra e sostituirlo con ]
 
BFS
 
 
 

 
 
quelli interni dovrebbero essere proprio pochi, si spera, da non richiedere 
automatismi
al limite segnalo l'anomalia al sito
 
 
...e grazie neh



sicuramente c'è di meglio ma pare funzionare..
 
 
----------------------
Dim miaStringa As String
Dim primo As Integer
Dim ultimo As Integer
 
miaStringa = "OQUT.LYPmtAt AS 'Last Year's Payments',"
primo = InStr(1, miaStringa, "'")
ultimo = InStrRev(miaStringa, "'")
miaStringa = Left(miaStringa, primo - 1) & "[" & Mid(miaStringa, primo + 1)
miaStringa = Left(miaStringa, ultimo - 1) & "]" & Mid(miaStringa, ultimo 
+ 1)
--------------------------------
 
Debug.Print miaStringa--->OQUT.LYPmtAt AS [Last Year's Payments],
 
 
 
con
miaStringa = "OQUT.LYPmtAt AS 'Last fdgjl'gfgfdg''gdfgf' Year's Payments',"
 
 
Debug.Print miaStringa--->OQUT.LYPmtAt AS [Last fdgjl'gfgfdg''gdfgf' 
Year's Payments],
 
 
BFS

 
 
 
asp
questa soluzione non va con l'ultimo campo prima del FROM che ovviamente 
non ha la virgola
 
    OQUT.SplitTaxFC AS 'Split Payment Tax FC',
    OQUT.SplitTaxSC AS 'Split Payment Tax SC'   <-----
 
se gli apici interni non hanno mai spazi prima o dopo te la cavi con un 
ulteriore replace "' " con "] "
 
 
BFS

 
 
eh sě, ma ci sono centinaia di tabelle (anche se quelle che uso saranno una 
ventina) con innumerevoli campi (spesso centinaia e centinaia), vai a 
sapere se quelli di SAP hanno dato altri nomi descrittivi del campo con 
l'apice
 
direi che per adesso va *benesissimo* cosě: find&replace fa il grosso, per 
il resto si va a manina, tanto poi la query modificata me la salvo a parte 
(fino al prossimo aggiornamento del database)
