组合框 vfp 上的 SQL Server 表

问题描述 投票:0回答:1

如何在组合框 vfp 上存储 sql server 表名

在我阅读了 SQL Server 2005 Express 表中的 VFP ComboBox 内容之后

有人可以帮我将名称表从 dbo sql server 存储到组合框 vfp

我尝试使用 sqltables() 并存储在 Grid1 vfp 中,可以显示名称表是

我的加载表单代码如下

<br/>public KONEKSI, mskedul1 
STORE SQLCONNECT('surya','surya','surya_database') TO KONEKSI 
IF KONEKSI > 0 
    SQLEXEC(KONEKSI,'use ksp_arthasurya') 
endif 
SQLTables(m.KONEKSI,'TABLE','tableList')

初始化时的我的代码来自

<br/>thisform.grid1.recordsource = 'tablelist'

在我的 grid1 上显示的表包含我的 sql 服务器 dbo.ksp_arthasurya

我的问题是我想命名属于我的组合框vfp上列出的dbo.ksp_arthasurya的表,如果我单击组合框vfp上的名称,我的grid1 vfp会显示数据表..

sql sql-server database odbc visual-foxpro
1个回答
0
投票

(你在多个网站上问同样的问题,你没看回复吗?无论如何)

这是一个示例表单,它将表名称放入组合框中,并在选择表后,在网格中显示该表的前 100 行:

(请注意,由于用户无法键入样式 2 的组合框,因此该代码不会被视为容易受到 SQL 注入攻击 - 但在您的实际用例中,您应该彻底进行评估)

Public oForm
oForm = Createobject('SampleForm')
oForm.Show()


Define Class SampleForm As Form
    Height=800
    Width =600

    Add Object cmbTables As ComboBox With Left=10, Top=10, Width=300,Style=2
    Add Object grdViewer As Grid With Left=0,Top=40,Height=760,Width=600,Anchor=15

    Procedure Init
        Local KONEKSI, lcSQL
        STORE SQLCONNECT('surya','surya','surya_database') TO KONEKSI 
        * Store Sqlstringconnect('Driver={SQL Server Native Client 11.0};Server=...;Database=ksp_arthasurya;...') To m.KONEKSI
        IF m.KONEKSI < 0 
            MESSAGEBOX("Couldn't connect.",0,'SQL Server connection',5000)
            RETURN .F.
        endif 
        SQLEXEC(m.KONEKSI,'use ksp_arthasurya')

        This.AddProperty('nHandle', m.KONEKSI)

        TEXT TO m.lcSQL noshow
Select CAST(QUOTENAME(SCHEMA_NAME(schema_id)) + '.' + QUOTENAME(Name) as varchar(200)) AS TableName
FROM sys.Tables
WHERE is_ms_shipped=0
ORDER by schema_name(schema_id), Name
        ENDTEXT

        lnResult    = SQLExec(m.KONEKSI, m.lcSQL,'TableList')
        If m.lnResult < 0
            Aerror(aWhy)
            Messagebox(aWhy[2])
            SQLDisconnect(0)
            Return .F.
        Else
            With Thisform.cmbTables
                .RowSourceType = 3
                .RowSource = 'select TableName from TableList into cursor crsTables nofilter'
                .ListIndex=0
            Endwith
        Endif
    Endproc

    Procedure cmbTables.InteractiveChange
        Local lcSQL

        Use In (Select('crsResult'))

        TEXT TO m.lcSQL TEXTMERGE noshow
select top(100) * from << TRIM(crsTables.TableName) >>
        ENDTEXT

        SQLExec(Thisform.nHandle, m.lcSQL ,'crsResult')
        With Thisform.grdViewer
            .ColumnCount = -1
            .RecordSource = "crsResult"
            .AutoFit()
        Endwith
    ENDPROC
    
    PROCEDURE Destroy
        SQLDISCONNECT(this.nHandle)
    endproc
Enddefine
© www.soinside.com 2019 - 2024. All rights reserved.