2016-04-25 4 views
1

私はSQL Serverのテーブルからデータを抽出するユーザーフォームを作成しています。データの上位80%を抽出し、それをExcelファイルにVBAコードで置きます。 私がしたいことは、この80パーセンタイルのデータがExcelシートに保存されていることです。テキストゾーンに数字だけを入力してExcelシートからデータの割合を選択できるようにしたいと思っています?トップシートのデータの上位N%を選択

これは私がSQL Serverからデータベースから抽出するために使用していたコードです:ここ

Private Sub CommandButton1_Click() 

Dim sSql As String 
Dim rs As ADODB.Recordset 
Dim cn As ADODB.Connection 
Dim cmdObj As ADODB.Command 
Dim qf As Object 

Sheets("sheet1").Select 
Selection.ClearContents 

Set cn = New ADODB.Connection 
cn.Open "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=swat_admin;PASSWORD=swat_admin;Initial Catalog=SWAT_V2_PLL;Data Source=NCEFORREP" 
sSql = "select TOP 80 PERCENT func.coresitecode,func.SiteCode,feature_id, TOTAL_PNRs,PNR_rank_id from rpt.functional_site_mapping func inner join (select TOP 80 PERCENT * from rpt.top_PNR_contributing_sites order by TOTAL_PNRs DESC) PNR on func.ptf_id = pnr.ptf_id and func.coresitecode = pnr.coresitecode and func.sitecode = pnr.sitecode order by PNR_rank_id " 
Set rs = New ADODB.Recordset 
rs.CursorLocation = adUseClient 
rs.Open sSql, cn, adOpenForwardOnly, adLockReadOnly, adCmdText 

If rs.EOF Then 
MsgBox (" the record set is empty. rs.EOF = " & rs.EOF) 
Else 
MsgBox ("The number of rows returned from the query is: " & rs.RecordCount) 
Range("a1").Select 
For Each qf In rs.Fields 
    Range("a1").Offset(0, coloffset).Value = qf.Name 
    coloffset = coloffset + 1 
Next qf 

Range("a2").CopyFromRecordset rs 
rs.Close 
Set rs = Nothing 

End If 
End sub 

は、誰もが、私はあなたに感謝助けることができれば、私のExcelのファイルです:

http://www.cjoint.com/c/FDzjyTNB1Lv

+2

あなたはファイル全体ではなく直面している問題についてのコードと説明をお役に立てば幸いです。 – newguy

+0

私はポストを編集しました。コードはDBからの抽出にありますが、私が必要とするのは80パーセントのその割合からです。NはNがユーザーによってtextzoneのuserformから選択されるようにする必要があります。フィルタを別のフィルタからフィルタリングする方法はありますが、テキストゾーンとvbaマクロを関連付ける方法は私の問題です – mateos

+0

'[...]を詳しく教えてください。ユーザーがExcelシートからデータの割合を選択できるようにしたいのですが、テキストゾーンの番号[...] '?私はあなたが達成したいことをよく理解していません。 – Ralph

答えて

0

メイクあなたがvb変数のパーセントを得ていることを確かめてください。例えばmyPercent、 *それが0と100の間の数値であることを確認してください。 *それから、あなたの既存のクエリに使用してください

ので

sSql = "select TOP 80 PERCENT 

sSql = "select TOP " & myPercent & "PERCENT 

になり、それがポストに

+0

こんにちは入力ボックスでそれをやりたいのですか?? – mateos

関連する問題