+ Reply to Thread
Results 1 to 1 of 1

VBA to generate create table ddl

  1. #1
    Registered User
    Join Date
    08-17-2018
    Location
    london
    MS-Off Ver
    office 2010
    Posts
    1

    VBA to generate create table ddl

    I have following code which reads data from a workbook with 2 sheets

    sheet 1 -sql template is where I post create statement between %START% and %END%

    eg
    %START%

    CREATE SET TABLE ,NO FALLBACK ,
    NO BEFORE JOURNAL,
    NO AFTER JOURNAL,
    CHECKSUM = DEFAULT,
    DEFAULT MERGEBLOCKRATIO
    (
    %END%

    sheet 2 -contains data which I want to populate using below macro

    sample data:
    DATABASE NAME TABLE NAME SET/MULTISET TABLE COLUMNS ATTRIBUTE DATATYPE ATTRIBUTE DATALENGTH NULLABLE SCALE PRECISION DATE_TIME_FORMAT CASESPECIFIC
    %START%
    DWH_ETL_USER WT_DwhEtl_Meta_Batch_Frequency Multiset Batch_Cd VARCHAR 10 Null CHARACTER SET LATIN NOT CASESPECIFIC
    DWH_ETL_USER WT_DwhEtl_Meta_Batch_Frequency Multiset Batch_SKey DECIMAL 12 Null 12 2 CHARACTER SET LATIN NOT CASESPECIFIC
    DWH_ETL_USER WT_DwhEtl_Meta_Batch_Frequency Multiset Batch_Name VARCHAR 50 Null
    DWH_ETL_USER WT_DwhEtl_Meta_Batch_Frequency Multiset Batch_Invoker_Name VARCHAR 50 Null CHARACTER SET LATIN NOT CASESPECIFIC
    %END%

    Option Explicit
    Private Const mcStart = "%START%" ' Start of data flag
    Private Const mcEnd = "%END%" ' End of data flag
    Private Const shData = "Data" ' Sheet name for source data
    Private Const shTemplate = "SQL Template" ' Sheet name for SQL template
    Private Const mcSQL = "SQL"

    Private Sub CommandButton1_Click()

    Dim rData As Range, rSQL As Range, rTemplate As Range, rTest As Range
    Dim dRow As Range

    Dim lDataStartRow As Long
    Dim lTemplateStartRow As Long
    Dim lLastNonBlankRow As Long

    With Sheets(shTemplate)
    Set dRow = .Range("A1").EntireColumn.Find(mcStart, .Range("A65536"), xlValues, xlWhole)
    End With
    lDataStartRow = dRow.Row + 1
    lLastNonBlankRow = Sheets(shTemplate).Range("A65536").End(xlUp).Row

    Dim idata As Integer

    For idata = lDataStartRow To lLastNonBlankRow - 1
    Sheets(mcSQL).Cells(lDataStartRow, 1) = (Sheets(shTemplate).Cells(idata, 1))
    lDataStartRow = lDataStartRow + 1
    Next idata

    Dim tempRow As Integer
    tempRow = lDataStartRow

    lDataStartRow = 0
    idata = 0

    With Sheets(shData)
    Set dRow = .Range("A1").EntireColumn.Find(mcStart, .Range("A65536"), xlValues, xlWhole)
    End With
    lDataStartRow = dRow.Row + 1
    lLastNonBlankRow = Sheets(shData).Range("A65536").End(xlUp).Row



    For idata = lDataStartRow To lLastNonBlankRow - 1
    Sheets(mcSQL).Cells(tempRow, 1) = (Sheets(shData).Cells(idata, 3))
    Sheets(mcSQL).Cells(tempRow, 2) = (Sheets(shData).Cells(idata, 4))
    Sheets(mcSQL).Cells(tempRow, 3) = (Sheets(shData).Cells(idata, 5))
    lDataStartRow = lDataStartRow + 1
    tempRow = tempRow + 1
    Next idata

    End Sub

    im trying to modify this macro so that I will have output as below but unable to accomplish this , would appreciate if anyone can plz help me on this


    CREATE SET TABLE DWH_ETL_USER.WT_DwhEtl_Meta_Batch_Frequency ,NO FALLBACK ,
    NO BEFORE JOURNAL,
    NO AFTER JOURNAL,
    CHECKSUM = DEFAULT,
    DEFAULT MERGEBLOCKRATIO
    (
    Batch_Cd VARCHAR(10) CHARACTER SET LATIN NOT CASESPECIFIC,
    Batch_SKey INTEGER,
    Batch_Name VARCHAR(50) CHARACTER SET LATIN NOT CASESPECIFIC,
    Batch_Invoker_Name VARCHAR(50) CHARACTER SET LATIN NOT CASESPECIFIC,
    UNIQUE PRIMARY INDEX ( Batch_Cd );
    Last edited by sshitanshu; 08-17-2018 at 11:33 AM.

+ Reply to Thread

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. Replies: 4
    Last Post: 03-13-2018, 07:29 AM
  2. [SOLVED] Generate new table from a current table in excel
    By dalenguyen in forum Excel Programming / VBA / Macros
    Replies: 3
    Last Post: 10-05-2016, 04:53 PM
  3. Generate table based on table in another sheet
    By bakdus94 in forum Excel Formulas & Functions
    Replies: 3
    Last Post: 07-21-2016, 12:14 PM
  4. [SOLVED] How do I get an entry in one table to generate the rows in an additional table?
    By Gavalar in forum Word Formatting & General
    Replies: 4
    Last Post: 04-16-2014, 08:07 PM
  5. Want to create a auto generate list from a name
    By robp201 in forum Excel General
    Replies: 1
    Last Post: 10-06-2013, 12:16 AM
  6. Using Macro to link sql table to generate Pivot Table
    By Benard in forum Excel Programming / VBA / Macros
    Replies: 0
    Last Post: 07-22-2008, 06:02 AM
  7. I WOULD LIKE TO RANDOMLY GENERATE FROM LIST I CREATE ON SAME PAGE
    By totalmaker in forum Excel Programming / VBA / Macros
    Replies: 1
    Last Post: 10-03-2005, 11:05 AM

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts

Search Engine Friendly URLs by vBSEO 3.6.0 RC 1