質問編集履歴
1
質問の内容を変えました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,22 +1,16 @@
|
|
1
1
|
SQLServerのデータ検索でカードNOをあいまい検索で条件指定して検索したいです。
|
2
2
|
カードの番号を入力してデータを検索してレコードを重複しないように
|
3
|
-
取得するシステムを作りたいのですがカード番号はデータ的は16桁ながらカードそのものに記載された番号は6桁のみで
|
3
|
+
取得するシステムを作りたいのですがカード番号はデータ的は16桁ながらカードそのものに記載された番号は6桁のみです。ややこしくて申し訳ないのですが
|
4
4
|
|
5
|
-
・1~8桁目は3種類のカードそれぞれの固有の番号で
|
6
|
-
|
5
|
+
・1~8桁目は会社のコードで00700000か00710000の2択です。
|
7
|
-
カードB:00800000または00810000
|
8
|
-
カードC:00600000または00610000
|
9
|
-
というものです。
|
10
6
|
|
11
|
-
・9~14桁目はカードに記載されている個別番号で、
|
7
|
+
・9~14桁目はカードに記載されている個別番号で、重複はしません
|
12
8
|
|
13
|
-
15,16桁目はチェックデジットのコードで
|
9
|
+
・15,16桁目はチェックデジットのコードです。
|
14
10
|
|
15
|
-
|
11
|
+
カード記載の9~14桁目を入力するだけでレコードを取得できるようにしたく、ビジュアルスタジオにVBで以下のコードを組みました。DBMSはSQLServerです。
|
16
12
|
|
17
|
-
カードの種類をラジオボタンで選択してカード記載の番号(=9~14桁目)を入力すればレコードを取得できるようにしたいのですが
|
18
|
-
```ここに言語を入力
|
19
|
-
Private Function CARD_CHK(ByVal pSYAINCD As String)
|
13
|
+
```Private Function CARD_CHK(ByVal pSYAINCD As String)
|
20
14
|
Try
|
21
15
|
|
22
16
|
Dim locSqlStr As String = ""
|
@@ -34,28 +28,18 @@
|
|
34
28
|
FROM [PREPAID].[dbo].[ZANDAKAMST]
|
35
29
|
where CARDNO LIKE '%'+'$CARNO$'+'%'"
|
36
30
|
|
37
|
-
|
31
|
+
cmd.CommandText = cmd.CommandText.Replace("$CARDNO$", pSYAINCD)
|
38
|
-
|
39
|
-
Using da As New SqlDataAdapter(cmd)
|
40
|
-
da.Fill(loc_dataset)
|
41
|
-
|
32
|
+
(文字数の関係で以下略)
|
42
|
-
End Using
|
43
|
-
cmd.Dispose()
|
44
|
-
End Using
|
45
|
-
conn.Close()
|
46
|
-
conn.Dispose()
|
47
|
-
End Using
|
48
|
-
If loc_dataset.Tables(0).Rows.Count = 1 Then
|
49
|
-
SYAINCD_CHK = True
|
50
|
-
|
33
|
+
```
|
51
|
-
SYAINCD_CHK = False
|
52
34
|
|
35
|
+
このコードで起動し、試しに0070000018000390というカードのデータを取得しようとカード記載の6桁180003を入力したところ、データが見つからないというエラー表示が出ました。しかし、カードの16桁すべてを入力したところデータの取得ができました。
|
36
|
+
SQLServerにて
|
37
|
+
```
|
38
|
+
SELECT [CARDNO]
|
39
|
+
,[KINGAKU]
|
53
|
-
|
40
|
+
,[NAME]
|
41
|
+
FROM [PREPAID].[dbo].[ZANDAKAMST]
|
42
|
+
where CARDNO LIKE '%'+'180003'+'%'"
|
54
43
|
|
55
|
-
Catch ex As Exception
|
56
|
-
SYAINCD_CHK = False
|
57
|
-
MsgBox(ex.Message)
|
58
|
-
MsgBox(ex.Source)
|
59
|
-
End Try
|
60
44
|
```
|
61
|
-
|
45
|
+
と入力し実行してもデータの取得ができたのでwhere CARDNO LIKE '%'+'$CARNO$'+'%'の部分がまずかったのかと思うのですがどうすればよいのでしょうか?
|