Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di afrappe
    Registrato dal
    Jan 2002
    Messaggi
    1,197

    Che tipo di query è questa?

    In un'applicazione ho trovato che è stata valorizzata la proprieta source di un recordset con questa roba

    codice:
    "SHAPE {select  0 as numero, sedifrom.sede_codice + ' - ' + sedifrom.sede_descr as sede1, sedito.sede_codice + ' - ' + sedito.sede_descr as sede2,linea.*,TIPO_LINEA.TPLIN_DESCR  from linea left join sedi as sedifrom on sede_sede0_from = sedifrom.sede_sede0 left join sedi as sedito on sede_sede0_to = sedito.sede_sede0 inner join tipo_linea ON LINEA.TPLIN_TPLIN0 = TIPO_LINEA.TPLIN_TPLIN0  where linea_datacanc is null and ATT_ATT0 = " & DataEnvironment1.rscmdAttivazioni!ATT_ATT0 & "}  AS LINEA APPEND ({select * from CANALI where CANALE_DATACANC is null}  AS  CANALI RELATE LINEA_LINEA0 TO  LINEA_LINEA0 )"
    che roba è "SHAPE" ,"APPEND", "RELATE"?????

  2. #2
    Il comando Shape APPEND assegna un recordset figlio alla proprietà Value dell'oggetto Field objects nel recordset padre.

    Sintassi

    SHAPE {parent-command} [[AS] parent-alias]

    APPEND ({child-command} [AS] child-alias

    RELATE parent-column TO child-column...) [[AS] chapter-alias] ...

    Descrizione delle parti

    parent-command, child-command Uno dei seguenti:

    Un comando query dentro parentesi graffe ("{}") che ritorna un oggetto recordset. Il comando è inviato al data provider sottostante, e la sintassi dipende dai requisiti dello specifico provider. Tipicamente è in SQL, ma ADO non richiede un particolare linguaggio. Le parentesi ("()") sono parole chiave obbligatorie: appendono al padre una colonna capitolo (chapter column) che punterà al recordset ritornato dal comando query.
    Il nome di un recordset shaped esistente.
    Un altro comando Shape
    La parola chiave TABLE, seguita dal nome della tabella.
    parent-column, child-column Una colonna nel recordset ritornato rispettivamente da parent-command (query sul padre) e child-command (query sul figlio).
    ... La clausola "parent-column TO child-column" è in pratica una lista, in cui ogni relazione tra colonne è separata da virgola.

    chapter-alias parent-alias child-alias Un alias che si riferisce a rispettivamente a la colonna appesa al padre, al recordset padre, al recordset figlio.

    ... La clausola dopo la parola chiave APPEND è una lista, in cui ogni clausola è separata da virgola, e definisce un'altra colonna da appendere al padre.

    Operazioni

    E' eseguito il parent-command (per brevità pcommand) e viene restituito un recordset padre; dopo viene eseguito il child-command (per brevità ccommand) ed è ritornato il recordset figlio.

    Ad esempio il pcommand può ritornare un recordset di clienti dalla tabella clienti, ed il ccommand un recordset di ordini dalla tabella ordini (per tutti i clienti).

    I recordset padre e figlio devono avere una colonna in comune per mezzo della quale essi sono associati. Le colonne sono indicate, prima la colonna padre e poi la colonna figlio, nella clausola RELATE. Ad esempio i recordset clienti ed ordini avranno un campo comune IDcliente.

    Con il data shaping si appende una colonna capitolo al recordset padre. I valori della colonna capitolo sono riferimenti alle righe nel recordset figlio che soddisfano la clausola RELATE, cioè per ogni record padre, i valori delle colonne padre e figlio specificate da RELATE hanno lo stesso valore.

    Quando si accede al riferimento nella colonna capitolo, ADO reperisce automaticamente il recordset rappresentato per riferimenti. Da notare che sebbene sia stato reperito l'intero recordset figlio, il capitolo presenta solo un subset di righe.

    Se la colonna appesa non ha alias, un nome viene automaticamente generato.
    Un oggetto field di tipo adChapter viene appeso alla collection Fields del recordset padre.

    Per informazioni su come navigare in un recordset gerarchico vedere Accessing Rows in a Hierarchical Recordset.

    Parameterized Commands

    Se si lavora con un grande recordset figlio, rispetto alla dimensione del recordset padre, ma è necessario accedere solo a pochi capitoli figlio, per una maggiore efficienza può essere utilizzato un comando parametrizzato.

    Un non-parameterized command reperisce i recordset completi di padre e figlio, appende la colonna chapter al padre, e quindi assegna un riferimento al relativo chapter figlio per ogni riga del padre.

    Un parameterized command reperisce l'intero recordset padre, ma reperisce i recordset chapter solo quando si accede alla colonna chapter.Questa differenza nella strategia di reperimento può portare a significativi benefici prestazionali.

    Per esempio:

    "SHAPE {SELECT * FROM customer}
    APPEND ({SELECT * FROM orders WHERE cust_id = ?}
    RELATE cust_id TO PARAMETER 0)"

    Le tabelle padre e figlio hanno la colonna cust_id in comune. Il comando figlio ha un segnaposto ("?") al quale si riferisce la clausola RELATE ( "PARAMETER 0"). La relazione è tra la colonna padre esplicitamente indicata e la colonna figlio (cust_id, specificata nella clausola where), e la clausola "PARAMETER 0".

    Nota La clausola PARAMETER è relativa solo alla sintassi del comando shape, e non è associata all'oggetto Parameter o alla collection Parameters di ADO.

    Quando lo shape command viene eseguito, avviene che:

    Il parent-command è eseguito e ritorna un parent recordset dalla tabella customer.

    Una colonna chapter è appesa al recordset padre.

    Quando si accede alla colonna chapter di una riga del padre, il valore della colonna customer.cust_id sostituisce il segnaposto per orders.cust_id, e quindi viene eseguito il child-command.

    Sono reperite tutte le righe della tabella orders in cui il valore della colonna orders.cust_id column coincide con il valore della colonna customer.cust_id.

    Viene memorizzato nella colonna chapter del record corrente del recordset padre un riferimento alle righe reperite del figlio (cioè il chapter del recordset figlio)

    I passi 3-5 sono ripetuti quando si accede alla colonna chapter di un'altra riga.
    Comandi Shape COMPUTE intermedi

    E' ora possibile nidificare il comando parametrizzato in un numero arbitrario di comandi COMPUTE. Ad esempio:

    SHAPE {select au_lname, state from authors} APPEND
    ((SHAPE
    (SHAPE
    {select * from authors where state = ?} rs
    COMPUTE rs, ANY(rs.state) state, ANY(rs.au_lname) au_lname
    BY au_id) rs2
    COMPUTE rs2, ANY(rs2.state) BY au_lname)
    RELATE state TO PARAMETER 0)


    chiaramente non è roba mia (magari sapessi tutta sta roba),. ma ho trovato un sito interessante in rete

    ciao

  3. #3
    Utente di HTML.it L'avatar di afrappe
    Registrato dal
    Jan 2002
    Messaggi
    1,197
    grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.