カテゴリー
SugiBlog ホームページ制作・システム開発|大阪

VisualC#でSQLServerへの接続

VisualC#でSQLServerに接続し、データを取得するサンプルです。
割と簡単に取得できますので、是非やってみてください。

まずはSqlClientの参照が必要です。

using System.Data.SqlClient;

接続の設定をします。

private string GetConnectionString()
{
    var builder = new SqlConnectionStringBuilder()
    {
        DataSource = "サーバーのIPアドレス",
        InitialCatalog = "データベース名",
        IntegratedSecurity = false, //User ID および Password を接続文字列中に指定するか
        UserID = "ユーザーID",
        Password = "パスワード"
    };

    return builder.ToString();
}

続きを読む…»

552 views

SQLServerで完全バックアップから別のデータベースに復元

SQL Server Management Studioでデータベースのバックアップから別のデータベースにデータを復元する方法

1.「データベース」を右クリックして、「新しいデータベース」を作成。

2.作成したデータベースを右クリックして[タスク]-[復元]をクリック。

3.復元用のソースを「デバイスから」とし、完全バックアップのファイルを指定。

4.[オプション]タブで「既存のデータベースを上書きする」にチェック。

5.[オプション]タブの「次のデータベースファイルに復元」で指定されているパスを新しく作成したデータベースのファイルに変更する。
そうしないと、元のデータベースとは復元先が違うのでエラーが発生します。

参考URL:
https://siguniang.wordpress.com/2010/04/25/sqlserver%E5%AE%8C%E5%85%A8%E3%83%90%E3%83%83%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97%E3%82%92%E5%88%A5%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%81%AB%E5%BE%A9%E5%85%83%E3%81%99%E3%82%8B/

7,710 views

文字列の長さを求める Len/LenB

VBAで文字列の長さを求める際は少し注意が必要です。
通常のLen関数を使用した場合、半角・全角に関わらず全ての文字を一文字として計算します。
かといって、LenB関数を使用しても、全ての文字を2バイトとして計算するため、答えは倍になるだけです。

他のプログラム、例えばPHPならstrlen関数になりますが、こちらでは半角は1バイト、全角なら2バイトとなります。
こちらと同じようにVBAでも計算したい場合はどうすれば良いのでしょうか?
答えは以下のようになります。

'長さを求めたい文字列
HenkanStr = "LenB関数"
MsgBox LenB(StrConv(HenkanStr, vbFromUnicode))

出力結果は「8」となります。

1,876 views

データ競合のエラーを無視する

ACCESSで発生したデータ競合のエラーを無視するにはエラーイベントに
以下のような記述をします。

Private Sub Form_Error(DataErr As Integer, Response As Integer)

    If DataErr = 7787 Then
         Response = acDataErrContinue
    End If

End Sub

「7787」はデータ競合エラーのエラー番号

定数「acDataErrContinue」の値は「0」です。

これで競合エラーを無視した場合は、[他のユーザーによる変更を反映]を
選択したのと同じ扱いになります。

1,727 views

コンピュータの再起動とシャットダウン

コンピュータの再起動とシャットダウンする方法をご紹介します。

コンピュータの再起動

int flag = 0;
flag = ShutdownLibWrap.Reboot;
flag |= ShutdownLibWrap.ForceIfHung;
ShutdownLibWrap.DoExitWindows(flag);

シャットダウンのキャンセル

何か処理を実行しているときに、Windows Update等で勝手にシャットダウンされないようにしたいときに便利です。

フォームのLoadイベントに以下を記述します。

// アプリケーションが閉じられる時のイベントを追加
SystemEvents.SessionEnding += new SessionEndingEventHandler(SystemEvents_SessionEnding);

シャットダウンを検知したらキャンセルします。

private void SystemEvents_SessionEnding(object sender, SessionEndingEventArgs e)
{
    e.Cancel = true;
}
1,472 views

OS起動時にアプリケーションを自動的に実行する

OS起動時にアプリケーションを自動的に実行するには、通常ならスタートアップに登録しますが、
アプリケーションから登録したい場合は、レジストリキーに登録する必要があります。

登録するキーは以下のようになります。

起動時に毎回実行する場合
Software\Microsoft\Windows\CurrentVersion\Run

次回起動時に1度だけ実行する場合
Software\Microsoft\Windows\CurrentVersion\RunOnce

レジストリキーを開きます。
第1引数は設定するキーのパス、第2引数は書き込み可能な状態で開くかどうかを指定します。

Microsoft.Win32.RegistryKey regkey =
    Microsoft.Win32.Registry.CurrentUser.OpenSubKey(
    @"Software\Microsoft\Windows\CurrentVersion\RunOnce", true);

キーに値を設定します。
第1引数はアプリケーション名、第2引数は実行ファイルまでのパスです。

regkey.SetValue(Application.ProductName, Application.ExecutablePath);

キーを閉じます。

regkey.Close();

続きを読む…»

3,133 views

ACCESS フィルター VBA

よく使うので覚書

Private Sub Search()
On Error Goto Exception

    Dim Coll  As Collection
    Dim SQL() As String

    Set Coll = New Collection


    If Not IsNull([検索テキスト]) Then
        Coll.Add "[フィールド1] Like '*" & [検索テキスト] & "*'"
    End If

    If [検索チェック] = -1 Then
        Coll.Add "[チェックフィールド] = " & [検索チェック]
    End If

    If [検索チェック2] = 0 Then
        Coll.Add "[チェックフィールド2] = 0"
    End If


    If Coll.Count > 0 Then
        For i = 1 To Coll.Count
            ReDim Preserve SQL(i - 1) As String
            SQL(i - 1) = Coll(i)
        Next i
        DoCmd.ApplyFilter , Join(SQL, " And ")
        'Debug.Print Join(SQL, " And ") '確認用
    Else
        Me.FilterOn = False
    End If

Exit Sub
Exception:
    MsgBox Err.Description
End Sub
1,101 views

CSVエクスポートでのテキストデータのNull値について ACCESS

AccessでCSVをエクスポートする際、テキスト型のフィールドがNullだった場合、
「,””,」とならず「,,」となってしまいます。
※前後にフィールドがあるとしています。

他のソフトやプログラムで該当ファイルを使用するときに、ダブルクォーテーション「”」が
必要な場合があります。

そういう時はNz関数を使います。
Nz関数はNullを別の文字列に置き換えしてれくる関数です。

データがNullだった場合、「,””,」という結果にするためには、Nullを長さゼロの文字列に置き換えます。

Nz([フィールド名],"")

もちろん、指定したフィールドのデータがNullでない場合はそのデータを返します。

5,475 views

Exif情報を編集する

スマートフォンやデジカメで撮影した写真にはどの方向(縦か横)で撮影されたか、という情報も格納されています。
画像方向(Orientation)というデータです。

画像を扱うプログラムを組んでいて、画像方向を編集する必要があったのでメモしておきます。

using System.Drawing;

string imgFile = "読み込むファイル";
string saveFile = "保存先ファイル";

//画像を読み込む
Bitmap bmp = new Bitmap(imgFile);

for (int i = 0; i < bmp.PropertyItems.Length; i++)
{
    Imaging.PropertyItem pi = bmp.PropertyItems[i];

    //Exif情報から画像方向を取得
    if (pi.Id == 0x0112)
    {
        //値を変更。強制的に横向きとする
        pi.Value = System.Text.Encoding.ASCII.GetBytes("1\0");
        pi.Len = pi.Value.Length;

        //設定する
        bmp.SetPropertyItem(pi);

        //目的の値が見つかればループを抜ける
        break;
    }
}

//保存する
bmp.Save(saveFile, Imaging.ImageFormat.Jpeg);

//後処理
bmp.Dispose();

Exif情報のタグID等は以下URLを参照してください。
http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/EXIF.html

2,302 views

Excel 罫線等の定数まとめ【Access】

AccessからExcelを操作し、罫線等を設定する場合、私自身もいつも定数の値が何だったかいちいち調べているので、備忘録も兼ねて書いておきます。

まずは全体の流れ

Dim ws

Dim xlApp      As Object
Dim xlBook     As Object
Dim xlSheet    As Object
Dim FileName   As String

Set ws = CreateObject("WScript.Shell")

FileName = ws.SpecialFolders("Desktop") & "\雛形.xlsx"

Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open(FileName)
Set xlSheet = xlBook.WorkSheets(1)

With xlSheet
    'このブロック内に書いていきます
End With

'保存
xlBook.Save

xlBook.Close

xlApp.Application.Quit

Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing

罫線を引く

.Range("A1:I1").Borders.LineStyle = 1
.Range("A1:I1").Borders(8).LineStyle = -4118
.Range("A1:I1").Borders(11).LineStyle = -4115
.Range("A1:I1").Borders(11).Weight = 1

続きを読む…»

7,380 views