2017-03-22 21 views
0

私のテーブルからいくつかの情報を取得しているMS Access SQLのクエリがあります。私は、整数を表示し、各行に対してX(1,2,3またはその他)でインクリメントするフィールドを、私のselectステートメントに含めたいと思います。MS Accessデータベース、Selectクエリ内のシーケンシャル番号

だから私のデータセットのようなものになります。(2ずつ増加した場合)


Name SKU  SortOrder <-This is my Auto Increment Field 
Table XYZ123 0 
Chair YRZ345 2 
Sofa UFD355 4 

私は私のテーブルにソート順を格納していないよ、私はただのAccess SQLでこれらの値を生成したいです。

ありがとうございました。


私はしかし、私は私のデータをつかむためにアクセスTSQLクエリを使用してのAC#のプログラムを足すよアクセスプログラムとVBAを介してこれを達成するためにいくつかの方法を説明し、次の記事を見つけた 更新エクセルファイルにエクスポートするので、アクセスプログラムの元のデータベースに何かを追加することはできません。さらに、一時テーブルのルートに行くと、データベースが膨れ上がってしまいます。

https://accessexperts.com/blog/2015/07/28/ways-to-do-sequential-numbering-in-access/

私はちょうど私のSELECT文で作成された連番の列をしたい、可能ではないということでしょうか?

+0

順序は可能ですが、MS Access SQLでは独自の列で注文する必要があります。 *名前* AND * SKU *ですか? – Parfait

+0

C#プログラムでデータを取得した後に、データの処理内容に応じて、クエリの結果をDataTableにロードし、DataTable自体に順次値を追加することも考えられます。 @Parfaitの示唆しているように、Access SQLクエリでこのような値を生成する方法はありますが、やや遅くなる可能性があります。 –

答えて

1

このようなデータを計算するためにSQLを使用しないことをお勧めします。悪い習慣です。 テーブルにフィールドを追加し、必要に応じてSQL文を実行する前に計算を実行する方がよいでしょう。

これを行うには、とにかくVBAで関数を実装できます。 Like:

Private m_counter as Integer 

Function CounterInit(Byval counter as Integer) 
    m_counter = counter 
End Function 

Function CounterGetNext(Byval incr as Integer) 
    m_counter = m_counter + incr 

    CounterGetNext = m_counter 
End Function 

次に、SQLでCounterGetNext()を使用します。しかし、依然としてSQLの実行前にCounterInit()を呼び出さなければなりません。このようなクエリには、RecordsetType = Snapshotを使用します。

+0

私のC#プログラムにVBAを取り込む方法がわかりません。私はDBを直接操作することはできません、それは私の側で行われる必要があります。 – UserSN

+0

なぜあなたはSQLでそれを行う必要がありますか?あなたのアプリケーションでそれからDataTableで、またはあなたが応答からデータを読み込んでいるところでそれを行います。 – Sergey

関連する問題