2017-06-09 9 views
0

私は道路名と道路タイプを含むデータセットを持っています。行方不明の道路名がたくさんあります。行方不明の名前に簡単な文字列を宣言し、その後に一意の整数識別子をつけて、以下に例を示します。文字列の後ろに欠損値の整数増分を追加するms-access

パス1 パス2 パス...

私は、declare関数を使用しようとしていますが、何かが私の文では正しくありません。

DECLARE @i int 
SET @i=0 

UPDATE KMS_VEJMIDT_BRUDT 
SET VEJNAVN = "Sti"+Str(@i), @[email protected]+1 
WHERE (((KMS_VEJMIDT_BRUDT.VEJNAVN) Is Null) AND ((KMS_VEJMIDT_BRUDT.VEJMTYPE)="Sti")); 
+0

どのようなエラーがありますか? –

+0

[msアクセス2007クエリで変数を宣言して設定する方法](https://stackoverflow.com/questions/5198193/how-to-declare-and-set-variable-in-ms-access-2007-クエリ) – June7

+0

これはアクセスコードに似ていません。アクセスはVBAであり、VBAは宣言関数を使用しません。 –

答えて

0

編集:私は少し質問を読み違える - 私は、生成された番号の接頭辞として「STIのを」追加しました、そして1

で開始あなたは3でこれを行うことができるかもしれませんthis answerに記載されているような2段階プロセスである。私はKMS_VEJMIDT_BRUDTテーブルにID主キーフィールドがあると仮定しています。

ステップ1:

SELECT C.ID, "Sti"&[RowNo] AS NEXT_VEJNAVN 
FROM (SELECT A.ID, 
A.VEJMTYPE, 
(select count(*) from KMS_VEJMIDT_BRUDT as B where A.ID>=B.ID AND B.VEJNAVN Is Null and A.VEJMTYPE = "Sti") AS RowNo 
FROM KMS_VEJMIDT_BRUDT AS A 
WHERE A.VEJNAVN Is Null 
and A.VEJMTYPE = "Sti" 
) AS C; 

this answerで説明したように行番号の回避策の使用:

次のSQLを使用してGENERATE_NEXT_NAVNという名前SELECT問い合わせください。これを使用して、ソーステーブルに存在する最高のNAVNから始まるインクリメント番号を生成します。

ステップ2: コピー一時テーブルへのステップ1のクエリ出力:

SELECT GENERATE_NEXT_NAVN.* 
INTO NEXT_NAVN_TEMP 
FROM GENERATE_NEXT_NAVN; 

ステップ3: 更新一時テーブル内の値を使用してソーステーブル:

UPDATE KMS_VEJMIDT_BRUDT 
INNER JOIN NEXT_NAVN_TEMP 
ON KMS_VEJMIDT_BRUDT.ID = NEXT_NAVN_TEMP.ID 
SET KMS_VEJMIDT_BRUDT.VEJNAVN = [NEXT_NAVN_TEMP].[NEXT_VEJNAVN]; 
+0

あなたは私の問題を解決してくれました。 – ThorD

+0

すごい!あなたが私の答えを受け入れるなら、喜んで:-)私は本当に感謝します – Alex

関連する問題