Newsgroup: it.comp.lang.visual-basic
Titolo: Comando SHAPE...

Ho un problema con l'istruzione SHAPE in VB6.
Sto realizzando una form d'ordine del tipo master/detail e per unire i dati
presenti nella intestazione dell'ordine con i dati presenti nelle due
tabelle delle righe d'ordine utilizzo il comando SHAPE che mi consente di
realizzazzre una aggregazione.
Utilizzando la Wizard di VB6 tutto funziona a perfezione infatti mi consente
di realizzare una form con una intestazione d'ordine ed una tabella delle
righe d'ordine ma, il mio problema è che ho due tabelle di righe d'ordine da
collegare all'intestazione ed allora mi sono addentrato nella
implementazione del comando SHAPE.
Non capisco con che logica posso legare le due tabelle di dettaglio con
quella di intestazione, di seguito il comando che ho generato, ma dove
sbaglio?
'------ inizio istruzione ----------
SHAPE {select
numero,data,ditta,cognome,nome,indirizzo,civico,citta,provincia,piva,nota,di
tta_f,indirizzo_f,civico_f,citta_f,provincia_f from tbl_ordini}
APPEND ((SHAPE {select
numero,data,ditta,cognome,nome,indirizzo,civico,citta,provincia,piva,nota,di
tta_f,indirizzo_f,civico_f,citta_f,provincia_f from tbl_ordini}
APPEND {select
numero,codice,descrizione,finitura,lunghezza,peso,quantita,anteprima from
tbl_ordini_sotto } RELATE numero TO numero) AS ChildCMD)
SHAPE {select
numero,data,ditta,cognome,nome,indirizzo,civico,citta,provincia,piva,nota,di
tta_f,indirizzo_f,civico_f,citta_f,provincia_f from tbl_ordini}
APPEND (( {select numero,codice,quantita,descrizione,lunghezza,finitura,peso
from tbl_ordini_sotto_liberi })
RELATE numero TO numero) AS ParentCMD
'------ fine istruzione ----------
Ciao e grazie
Enzo

Non ho letto tutta la sintassi perché é difficilmente testabile, però shape
ha una sintassi bizzarra: a seconda del numero di coppie shape-append cambia
l'uso che devi fare delle parentesi tonde-graffe.
Mi ero salvato un link che indicava come usarle, vedi se può esserti utile:
http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q189657

Premettiamo che lo SHAPE è un comando SQL
non Vb6 ... e che soprattutto è un comando per
provider ole-db e non odbc
La logica di aggregazione e poco più che una join
tra due tabelle normali. Chiaro che cambia la
sintatti, ma il concetto di fondo è quello.
Se avessi provato a dare un occhio alla guida di
sql avresti trovato un esempio anche bello e funzionante.
Comunque, ...
Il tuo esempio è abbastanza complesso e senza una base
dati dietro sarebbe veramente difficile aiutarti. Ti
posto un esempio più piccolo funzionante e dal
quale puoi partire con degli spunti. Altra cosa.
Personalmente non ho mai usato gli shape annidati,
quindi non saprei nemmeno se possa essere quello
il tuo problema.
SHAPE {select cli_ID, cli_numero, cli_data, cli_ditta,
                         cli_cognome, cli_nome FROM Clienti}
APPEND (( select ord_ID, ord_descrizione FROM Ordini)
                 AS ordine RELATE cli_id TO ord_ID)
Per intenderci il concetto di relazione è dettato dalla clausola
RELATE che come vedi deve avere il famoso campo
in comune proprio come per le join
HTH
-- 
Saluti
Andrea Moro

prova cosi
"SHAPE {select numero , Data, ditta, cognome, nome, indirizzo, civico,
citta, provincia, piva, nota,
ditta_f,indirizzo_f,civico_f,citta_f,provincia_f from tbl_ordini}  AS
TabPrimaria APPEND ({select numero , Data, ditta, cognome, nome, indirizzo,
civico, citta, provincia, piva, nota,
ditta_f,indirizzo_f,civico_f,citta_f,provincia_f from tbl_ordini} APPEND
{select numero,codice,descrizione,finitura,lunghezza,peso,quantita,anteprima
from tbl_ordini_sotto }  AS ChildCMD1 RELATE numero TO numero ) AS
ChildCMD1,({select numero , Data, ditta, cognome, nome, indirizzo, civico,
citta, provincia, piva, nota,
ditta_f,indirizzo_f,civico_f,citta_f,provincia_f from tbl_ordini} APPEND
(( {select numero,codice,quantita,descrizione,lunghezza,finitura,peso from
tbl_ordini_sotto_liberi }}  AS ChildCMD2 RELATE numero TO numero ) AS
ChildCMD2"