So-net無料ブログ作成

SQL Server 2005 Express Edition のサーバ名 [SQL Server]

----------------------------------------------------------
(実行環境)

Microsoft Visual Studio 2005 Tools for Applications によるアプリケーション

Microsoft SQL Server 2005 Express Edition

----------------------------------------------------------

今日は「実行環境」です。

 

 SQL Server 2005 Express Edition のサーバ名(デフォルト)はこれ。

    "(local)\SQLEXPRESS"

 上記の「\ 」は「円マーク」です。

 Expressじゃないものは、 (local)ですね。

 

インストーラでExpressを必須コンポーネントで入れるときは、

SQL Server でつなぐときに参照するxmlファイルのサーバ名に注意。


空っぽのテーブルにデータを一括で挿入する [SQL Server]

----------------------------------------------------------
(開発・実行環境)

Microsoft Visual Studio 2005 Tools for Applications

Microsoft Visual Basic 2005

Microsoft SQL Server 2005

----------------------------------------------------------

マスタデータを一気にテーブルに流したいので、txtファイルから BULK INSERT ステートメントを実行する。

BULK INSERT        テーブル名
FROM                'C:\ファイル名.txt'
WITH(
    DATAFILETYPE = 'char',
    FIELDTERMINATOR = ',',
    ROWTERMINATOR = '\n'
)


INSERTするファイルは、SQL Server のデータを持ってるテーブルから予めエクスポートして取得しておく。

このときのコピー元ソースは「Microsoft OLE DB Provider for SQL Server」,

変換先は「フラット ファイル変換先」、

ファイル名は参照からディレクトリを選んでファイル名を指定してやる。

 

参考

http://d.hatena.ne.jp/tomoyamkung/20080910/1221018887


CREATE DATABASE ステートメント実行時のエラー [VB.NET]

----------------------------------------------------------
(開発・実行環境)

Microsoft Visual Studio 2005 Tools for Applications

Microsoft Visual Basic 2005

Microsoft SQL Server 2005

----------------------------------------------------------

 

VB から SQL Server にプログラムで新規にDBを作る場合、CREATE DATABASEステートメントを実行する。

が、普段 SELECT したり INSERT したりするのと同じように実行すると、

「CREATE DATABASE ステートメントは、複数のステートメントを含むトランザクション内では許可されません。」

とエラーが発生する。

 

こちら を参考にすると解決。(ありがとうございます!MSDN意味不明だもん。。)

自動コミットメントモード。。なんじゃそりゃ。。

 

トランザクションじゃない、ってことは、コミットしたりロールバックしたりしない、ってことか。

要は、SqlClient.SqlTransaction型の変数を使って、

BeginTransactionとか、

Rollbackだとか、

Commitなんかをしない、ってことかね。

なるほど。

 

ちなみに、CREATE TABLE は、SqlTransaction有りでも無しでも両方通った。

 

 

(追記)2009/10/30

バックアップファイルを作成する、BACKUP DATABASE ステートメントでも、CREATE DATABASE と同様の挙動が見られた。


ComboBoxを読み取り専用にして、表示を見られるようにしたい [コントロール]

----------------------------------------------------------
(開発・実行環境)

Microsoft Visual Studio 2005 Tools for Applications

Microsoft Visual Basic 2005

----------------------------------------------------------

取得したデータをComboBoxに表示したいけど変更はかけたくない。

要はReadOnly=Trueな状態にしたい。

でもReadOnlyプロパティは無いし、Enabled=Falseにしたら文字読みにくいし。。

 

ってわけで先輩が素敵な関数(イベントのサブルーチン)を与えてくれた♪

ComboBoxをEnabled=Falseのときに、ComboBox内の要素を指定した色に描画してくれるイベント。


    Private Sub cboAssetsDiv_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles cboAssetsDiv.DrawItem

        If Me.cboAssetsDiv.Enabled = True Then
            'Me.cboAssetsDiv.DrawMode = DrawMode.Normal
            Exit Sub
        End If

        '背景を描画する
        '項目が選択されている時は強調表示される
        e.DrawBackground()

        Dim cmb As ComboBox = CType(sender, ComboBox)
        '項目に表示する文字列
        Dim txt As String
        If cmb.FindString(cmb.Text) < 0 Then
            cmb.Items.Add(cmb.Text)
            'cmb.Items.Add(dt)
            cmb.DropDownStyle = ComboBoxStyle.DropDown
        End If
        txt = cmb.Text

        '使用するブラシ
        Dim b As Brush = New SolidBrush(SET_COLOR)
        '文字列を描画する
        Dim ym As Single = (e.Bounds.Height - _
            e.Graphics.MeasureString(txt, cmb.Font).Height) / 2
        e.Graphics.DrawString(txt, cmb.Font, b, _
            e.Bounds.X, e.Bounds.Y + ym)
        b.Dispose()

    End Sub


SET_COLORに文字色をセット。

 

DrawItemイベントは、DrawModeプロパティがNormalじゃないときに発生する。(デフォルトはNormal)

制御したいタイミングで、Enabled と DrawMode を切り替えて、上記のDrawItemイベントを走らせることで、表題の件を実現できるかと。

Enabled=Trueでは走らないようにしましょう。面白いことになるから・・・w

 

まぁ、ここまですんの?って感じだけど。

ComboBoxの読み取り専用制御、色々やり方はあるかと思いますが、一つありがたいソースをGet。


Groupヘッダ・フッタのTextBoxの値を明細データによって制御したい [ActiveReports] [ActiveReports]

----------------------------------------------------------
(開発・実行環境)

Microsoft Visual Studio 2005 Tools for Applications

Microsoft Visual Basic 2005

ActiveReports 2.0J Standard

----------------------------------------------------------

 

タイトルの文言では、いまいち何を言いたいかわかりにくい。。。

語彙不足。。。

 

さて、何がしたいかと申しますと。

 明細データを項目の属性別に値を集計するときに、その属性毎にGroupHeader(又はFooter)のTextBoxの文字を変えたいような場合、ですね。

言い換えると、項目の属性別にグルーピングして、グループごと名前の表示を変えたいってことです。

(例えば・・・コーラ、オレンジジュース、お茶・・・飲料合計金額、パン、おにぎり、カップ麺・・・食料品合計金額、みたいな。伝わった?汗)

 

ActiveReportsは、めんどくさい(のか楽チンなのかよくわからない)ことに、データの数だけ勝手にレポートに出力してくれるんですが、各Sectionのデータの出力タイミングがどうにも制御しずらく、Detail SectionのTextBoxのデータをGroupFooter のFormatイベントで引っ張ってきても、データ行が一つズレていたりして、Groupの制御がうまくいかなかったんです。

 なので、色々あーだこーだ試行錯誤した結果、 やっと自分なりに汎用的(?)な解決策が。

 

 制御したいGroupのSectionにTextBoxを置いて、Visible = False とする。

 このTextBoxをInitializeフィールドで、属性のデータを持つDataFieldsにバインドする。

属性TextBoxの値によって行う制御を、各SectionのFormatイベントに記述する。

 

これでどーにか、Group別にうまく制御することができましたとさ。

まぁ気づけばどうってことないんですけどね。。。

 

(今更ですが)文章が下手ですいません。

 

ActiveReports、うだうだ悩むよりガチャガチャイジって、理屈より経験的に覚えようかと思います。



この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

×

この広告は1年以上新しい記事の更新がないブログに表示されております。