BANSYSTEMSBLOG

Load of the ○○○○PHP!?

‘ ネットワークリソースの接続を行うための関数宣言
Declare Function WNetAddConnection3 Lib “mpr.dll” _
Alias “WNetAddConnection3A” _
(ByVal hwndOwner As Long, _
lpNetResource As NETRESOURCE, _
ByVal lpPassword As String, _
ByVal lpUserName As String, _
ByVal dwFlags As Long) As Long

‘ ネットワークリソースの切断を行うための関数宣言
Declare Function WNetCancelConnection2 Lib “mpr.dll” _
Alias “WNetCancelConnection2A” _
(ByVal lpName As String, _
ByVal dwFlags As Long, _
ByVal fForce As Long) As Long
‘ ネットワークリソース情報構造体
Type NETRESOURCE
dwScope As Long
dwType As Long
dwDisplayType As Long
dwUsage As Long
lpLocalName As String
lpRemoteName As String
lpComment As String
lpProvider As String
End Type
‘ リソースタイプ定数
Public Const RESOURCETYPE_DISK = &H1
‘ 接続スコープ定数
Public Const RESOURCE_GLOBALNET = &H2
‘ 表示タイプ定数
Public Const RESOURCEDISPLAYTYPE_SHARE = &H3
‘ 使用方法定数
Public Const RESOURCEUSAGE_CONNECTABLE = &H1
‘ 接続オプション定数
Public Const CONNECT_UPDATE_PROFILE = &H1
Public Const CONNECT_INTERACTIVE = &H8
‘ エラー定数
Public Const NO_ERROR = 0&
Public Const ERROR_CANCELLED = 1223&
‘ Api0311 – ネットワークリソースの接続/切断(実現部)
Private Sub Command1_Click()
Dim udtNetResource As NETRESOURCE
Dim lngWNetApiResultCode As Long
Dim strPassWord As String
Dim strUserName As String
‘ ネットワークリソースに関する情報を設定
With udtNetResource
.dwScope = RESOURCE_GLOBALNET
.dwType = RESOURCETYPE_DISK
.dwDisplayType = RESOURCEDISPLAYTYPE_SHARE
.dwUsage = RESOURCEUSAGE_CONNECTABLE
.lpLocalName = Text2.Text
.lpRemoteName = Text1.Text
End With
‘ パスワードとユーザー名を指定する必要がある場合は、
‘ 以下の変数に値を設定
strPassWord = vbNullString
strUserName = vbNullString
‘ ネットワークリソースをローカルドライブにマッピング
‘ ユーザー認証のためのダイアログを表示
lngWNetApiResultCode = _
WNetAddConnection3(Me.hWnd, _
udtNetResource, _
strPassWord, _
strUserName, _
CONNECT_UPDATE_PROFILE Or _
CONNECT_INTERACTIVE)
‘ 結果を取得
If lngWNetApiResultCode = NO_ERROR Then
Label4.Caption = “マッピング成功”
ElseIf lngWNetApiResultCode = ERROR_CANCELLED Then
Label4.Caption = “キャンセル”
Else
Label4.Caption = “マッピング失敗”
End If
End Sub
‘ 切断
Private Sub Command2_Click()
Dim lngWNetApiResultCode As Long
Dim strLocalName As String
‘ ローカルドライブ名を設定
strLocalName = Text2.Text
‘ ローカルドライブを切断
lngWNetApiResultCode = _
WNetCancelConnection2(strLocalName, _
CONNECT_UPDATE_PROFILE, _
False)
‘ 結果を取得
If lngWNetApiResultCode = NO_ERROR Then
Label4.Caption = “切断成功”
Else
Label4.Caption = “切断失敗”
End If
End Sub

仕様に問題がありそうなのでその辺は仕様変更すればいい話なのだが、
クライアントからの要望をなんとか実現したいと思ったりもする。
しかしテキストボックスや、サブフォームをコードで自動生成し、なおかつテキストボックスを
ダブルクリック時のイベントプロシージャを設定。そこまでできた。
しかし、その中のコードまでも自動生成したかったがさすがに不可能。
Moduleというクラスは用意はされているがうまく動作しない。
「メモリ不足です」となってしまう。
うーん、惜しい。
ま、別の方法で簡単に実現できるので仕様変更するしかないかな。
それにしてもヘルプの読みすぎで疲れる…。

キーボードの無効化はマクロでやってたんだけど、急遽シフトキーの起動まで
無効化したくなっていいものを発見しました。

AllowBypassKey

VBEの方のヘルプで上の関数名を検索してください。
使用例も載ってますので自分流に作り変えることが簡単ですよ。
OpenDatabase(ファイルのフルパス).Properties![AllowBypassKey] = True
でシフトキーが有効になります。Falseで無効。
開発環境には同じフォルダにシフトキーを有効無効にするプログラムをおいておけば良い。
ま完全に安定するまではこれはやらなくていいと思うけど。
あとMDEとかにするんだったら必要ないかな。
どういうときに必要かというと、あるクライアントが一応サーバーにおいてある.mdbファイルを
複数で使用していてAccessの生データを直接操作しているので誤って削除することが多いとのことで
急遽修繕。たいしたことではないのでサービスで行いました。
しかし意外と時間がかかってしまってしかもやっぱり性格上の問題なのか典型的な日本人なのかお金のもらえない仕事になんでこんなに一生懸命になるのかが不思議。悲しい性だね。
ちょっと直すところがここもここもといろいろきいていくうちに、とんでもなく、別物のプログラムになりました。すべてマクロをつかっていたのをVBAに直したんだから疲れるわー。
んで最後にシフトキーを無効。mdeにしないでということでシフトキーの無効化を実現。
これでとりあえずエンドユーザには直接レコードを開く事ができなくなりました。
詳しい人がいれば開いちゃいますけど…。
Accessも奥が深いなー。今度Access上級試験でも受けてみようかな?。

Linuxからディレクトリをネットワーク上でコピーしただけ
(あ、その間にWindowsを介してコピーしたっけ…?)
フォルダの権限の問題らしかった…。
別のフォルダにしたら動作しました。
なんのこっちゃ。
とりあえず解決したのですっきりした。

MacOSXを使ってMovableTypeをローカルで確認するため設定をした。
しかしなぜか、StyleSheetが適用されず…。調べても全くヒットしない。
まったくわけわからん。
mt.cfgも特におかしいわけでもなさそうだし。なぜスタイルシートを読み込めないのかが良くわからん。
それにしてもMacOSXでMovableTypeを動かすにはかなり大変です。
DeveloperToolsをインストールしなければなりません。
それをインストールしないとDBDのインストールで引っかかります。
またDBI、DBDのインストールですが、Webminからインストールすると非常に楽です。
Wenminはお勧めです。
それにしても非常に時間がかかった挙句に解決しなかったのが悔やまれるがこれ以上は時間かけられません。

Oracleの表領域がなくなったので追加した。

SQL> ALTER TABLESPACE USERS ADD DATAFILE
2 ‘C:\oracle\ORADATA\oracle\users02.dbf’ SIZE 100M;
表領域が変更されました。

稼働中のLinuxサーバーの内臓HDDが限度にちかづいてきたため、
外付けHDDを増設した。

# fdisk /dev/sda
コマンド (m でヘルプ): p
※パーティションが存在する場合表示される。
コマンド (m でヘルプ): d
※パーティションの番号を入力。
コマンド(m でヘルプ): n
コマンドアクション      
    e 拡張
    p 基本領域 (1-4)
  p                 
  領域番号 (1-4): 1      
  最初 シリンダ (1-38154, default 1):1
  Using default value 1
  終点 シリンダ または +サイズ または +サイズM または +サイズK (1-38154, default 38154): (適切な値を入力)
コマンド(m でヘルプ):p
 (省略)
  デバイス   Boot   Start     End     Blocks   Id   System
  /dev/sda1           1   19074  19531760   83   Linux  
コマンド(m でヘルプ): w
領域テーブルは交換されました!

■次に新しいパーティションへ保存可能とするようにシンボリックリンクを作成し新たに登録されるファイルのみを増設HDDへ保存するように設定した。

またまた新たなデータベース作成。
今回は、Accessプロジェクトで開発することにした。
思っていた以上に楽です。
無駄なコードを書く必要がなく直接SQLServerを操作している感じで
開発できます。ストアドプロシジャも楽に作れるしテーブル定義の変更も楽。
ケースバイケースなのですが、自分は今後プロジェクトで開発していこうと思います。