スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Proc Reg : 最小二乗法・回帰式・モデル

出力をデータセットにするときのTips。
出力する場合、outestオプションを指定(quitを忘れずに!)。
決定係数も出力したい場合は、EDFオプションを指定。

proc reg data=[dsn] outest=[outdsn] EDF noprint ;
model y = x ;
run ;
quit ;
スポンサーサイト

オートフィルタの解除(VBA)

[オートフィルタの解除(VBA)]の続きを読む

ADOを使ってアクセスにアクセス

※ 汎用的に使いたいので、クラスでの操作にしました。
※ 参照設定でActiveX Data Access Objectを追加するのを忘れずに

'-- クラス(クラス名=clsDB)
Option Explicit

Private strcon As String

Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset

Public Sub Connect(fnAccess As String)
strcon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & fnAccess & ";"
cn.Open strcon
End Sub

Private Sub Class_Terminate()
On Error Resume Next
rs.Close: Set rs = Nothing
cn.Close: Set cn = Nothing
On Error GoTo 0
End Sub

Public Function DoSQL(sql As String) As ADODB.Recordset
rs.Open sql, cn
Set DoSQL = rs
End Function

Public Sub 項目名出力(ByVal rs As ADODB.Recordset, ByVal rng As Range)
Dim i As Long
For i = 0 To rs.Fields.Count - 1
rng.Offset(0, i).Value = rs.Fields(i).Name
Next
End Sub


'--本体 ------------
Option Explicit

Public Sub 項目データのロード()
Dim rs As New ADODB.Recordset, db As New clsDB, sql As String
Dim rng As Range

db.Connect "mdbのファイルパス"
sql = "select * from Table_***;"
Set rs = db.DoSQL(sql)

Set rng = Range("B11")
db.項目名出力 rs, rng.Offset(-1, 0)

Do Until rs.EOF
rng.Offset(0, 0) = rs!***
rng.Offset(0, 1) = rs!***
rs.MoveNext
Set rng = rng.Offset(1, 0)
Loop
rs.Close: Set rs = Nothing
End Sub

ログインIDの取得

Option Explicit

'ログインID取得用
Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

Public Function UserName() As String
Dim Name As String
Name = Space(255)
Call GetUserName(Name, Len(Name))
UserName = Left(Name, InStr(1, Name, Chr(0)) - 1)
End Function

テキストボックスに入力制限(数字以外は入力不可)

Option Explicit

Private Sub textbox_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If 数字以外の入力制限(KeyAscii) = False Then KeyAscii = 0
End Sub

Private Function 数字以外の入力制限(ByVal KeyAscii As Integer) As Boolean

Const Numbers$ = "-0123456789" ' 入力許可文字

数字以外の入力制限 = True
If KeyAscii <> 8 Then ' バックスペースは例外
If InStr(Numbers, Chr(KeyAscii)) = 0 Then
数字以外の入力制限 = False
Exit Function
End If
End If

End Function

workライブラリの変更

cfgファイル(-workオプション)で変更。
cfgファイルは、SAS\nls\ja\sasv*.cfgにある。

例)
-WORK "D:\MySASFolder\forWork"

SASでインデックスindexを作成する方法

*複合インデックス*;
proc datasets library=[libname] nolist ;
modify [dsn] ;
index create [ind_db]=([key1 key2 ...]) ;
run ;

※ proc sql でも作れる
proc sql ;
create index [ind_db] on [db]([key1, key2,,,]) ;
quit ;

*単一インデックス*;
proc datasets library=[libname] nolist ;
modify [dsn] ;
index create [key1 key2 ...] ;
run ;

※ 複合と単一との違いやメリットデメリットはわかりません、、、


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。