Costruzione dinamica tabelle Coldfusion

  • Creatore Discussione Creatore Discussione teosteo
  • Data di inizio Data di inizio

teosteo

Nuovo Utente
28 Lug 2006
3
0
0
Ciao Ragazzi,
avrei bisogno di una dritta per la costruzione dinamica di tabelle.. mi spiego:
Ho un database che contiene le mie tabelle complete. In questo DB ci sono 2 tabelle che contengono

MasterTbl nomi tabelle
DetailTbl nomi campi e loro costruzione (tipo e grandezza)

io recupero i dati di alcune tabelle e le devo rigenerare in un'altro database!
Questo è il mio codice

Seleziono le tabelle che mi servono
<cfquery name="SelTbl" datasource="OFAHR" dbtype="ODBC">
Select
TBCODICE,
TBAZIENDA,
TBCREATA
from #session.AZIENDA[url.azi]#WEB_TBOF
order by tbcodice
</cfquery>

<cfif #SelTbl.recordcount# NEQ 0>

<cfloop query="SelTbl" startrow="1">

seleziono i campi che compongono la tabella
<cfquery name="SelcampiTbl" datasource="AHR" dbtype="ODBC">
select FLNAME,FLTYPE,FLLENGHT,FLDECIMA
from XDC_FIELDS
where TBNAME = '#TRIM(SelTbl.TBCODICE)#'
order by CPROWNUM
</cfquery>

<cfif #SelcampiTbl.recordcount# NEQ 0>
<cfset contacampi = #SelcampiTbl.recordcount# - 1>

<cfif #SelTbl.TBCREATA# EQ 'S'>
se la tabella esiste la canlello
<cfquery name="CANCELLATbl" datasource="OFAHR" dbtype="ODBC">
<cfif #SelTbl.TBAZIENDA# EQ 1>
DROP TABLE #session.AZIENDA[url.azi]##TRIM(SelTbl.TBCODICE)#
<cfelse>
DROP TABLE #SelTbl.TBCODICE#
</cfif>
</cfquery>
</cfif>
creo la tabella
<cfquery name="CREATbl" datasource="OFAHR" dbtype="ODBC">
<cfif #SelTbl.TBAZIENDA# EQ 1>
CREATE TABLE #session.AZIENDA[url.azi]##TRIM(SelTbl.TBCODICE)#
<cfelse>
CREATE TABLE #SelTbl.TBCODICE#
</cfif>
(
<cfloop query="SelcampiTbl" startrow="1" endrow="#contacampi#">
#TRIM(SelcampiTbl.FLNAME)#
<cfswitch expression="#SelcampiTbl.FLTYPE#">
<cfcase value="C">
Char(#SelcampiTbl.FLLENGHT#) NULL
</cfcase>
<cfcase value="N">
Decimal(#SelcampiTbl.FLLENGHT#,#SelcampiTbl.FLDECIMA#) NULL
</cfcase>
<cfcase value="D">
Datetime NULL
</cfcase>
<cfcase value="L">
Bit NULL
</cfcase>
<cfcase value="M">
Text NULL
</cfcase>
<cfdefaultcase>
</cfdefaultcase>
</cfswitch>
<cfif #SelcampiTbl.currentrow# EQ #contacampi#>
, cpccchk char(10))
<cfelse>
,
</cfif>
</cfloop>
</cfquery>
</cfif>
seleziono i dati dalla tabella sorgente
<cfquery name="selezionaTbl" datasource="AHR" dbtype="ODBC">
SELECT
<cfloop query="SelcampiTbl" startrow="1" endrow="#contacampi#">
#SelcampiTbl.FLNAME#
<cfif #SelcampiTbl.currentrow# EQ #contacampi#>
FROM
<cfif #SelTbl.TBAZIENDA# EQ 1>
#session.AZIENDA[url.azi]##SelTbl.TBCODICE#
<cfelse>
#SelTbl.TBCODICE#
</cfif>
<cfelse>
,
</cfif>
</cfloop>
</cfquery>
inserisco i dati nella tabella destinazione
<cfloop query="SelezionaTbl" startrow="1">
<cfquery name="InserimentoTbl" datasource="OFAHR" dbtype="ODBC">
INSERT INTO
<cfif #SelTbl.TBAZIENDA# EQ 1>
#session.AZIENDA[url.azi]##SelTbl.TBCODICE#
<cfelse>
#SelTbl.TBCODICE#
</cfif>
(
<cfloop query="SelcampiTbl" startrow="1" endrow="#contacampi#">
#SelcampiTbl.FLNAME#
<cfif #SelcampiTbl.currentrow# EQ #contacampi#>
, cpccchk ) VALUES (
<cfelse>
,
</cfif>
</cfloop>
<cfloop query="SelcampiTbl" startrow="1" endrow="#contacampi#">
#SelezionaTbl.SelcampiTbl.FLNAME# (:dipser: qui c'è il mio problema.. non riesco a tirar fuori il dato che dovrei trovare nella selezione SelezionaTbl :dipser: )
<cfif #SelcampiTbl.currentrow# EQ #contacampi#>
, 'abcabcabca')
<cfelse>
,
</cfif>
</cfloop>
</cfquery>
</cfloop>
salvo la tabella come generata
<cfquery name="update" datasource="OFAHR" dbtype="ODBC">
update #session.AZIENDA[url.azi]#WEB_TBOF set tbcreata = 'S' where tbcodice = '#TRIM(SelTbl.TBCODICE)#'
</cfquery>

</cfloop>

</cfif>


allora per quanto riguarda la costruzione nessun problema ma ho difficoltà nell'inserimento dei dati. Devo per forza fare in questo modo in quanto i campi possono variare di frequente..

Qualcuno ha un'idea su come tirar fuori sto benedetto dato? le ho provate un po tutte
#SelezionaTbl.SelcampiTbl.FLNAME#
#SelezionaTbl[SelcampiTbl.FLNAME]#
#SelezionaTbl.SelcampiTbl.FLNAME[SelezionaTbl.CurrentRow]#
ma non funziona nulla!

Sono Disperato!
 

Discussioni simili