質問するログイン新規登録

質問編集履歴

1

質問の内容を変えました。

2019/10/18 06:08

投稿

ryuuzu
ryuuzu

スコア30

title CHANGED
File without changes
body CHANGED
@@ -1,22 +1,16 @@
1
1
  SQLServerのデータ検索でカードNOをあいまい検索で条件指定して検索したいです。
2
2
  カードの番号を入力してデータを検索してレコードを重複しないように
3
- 取得するシステムを作りたいのですがカード番号はデータ的は16桁ながらカードそのものに記載された番号は6桁のみで、カードの種類も3種類あります。ややこしくて申し訳ないのですが
3
+ 取得するシステムを作りたいのですがカード番号はデータ的は16桁ながらカードそのものに記載された番号は6桁のみです。ややこしくて申し訳ないのですが
4
4
 
5
- ・1~8桁目は3種類のカードそれぞれの固有の番号で
6
- ードA:00700000または00710000
5
+ ・1~8桁目は会社のコード0070000000710000の2択です。
7
- カードB:00800000または00810000
8
- カードC:00600000または00610000
9
- というものです。
10
6
 
11
- ・9~14桁目はカードに記載されている個別番号で、同種のカードであれば重複しませんが他種のカードは重複する可能性があります。
7
+ ・9~14桁目はカードに記載されている個別番号で、重複しません
12
8
 
13
- 15,16桁目はチェックデジットのコードで、1~14桁目が重複していなければ重複しません
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
- cmd.CommandText = cmd.CommandText.Replace("$CARDNO$", pSYAINCD)
31
+ cmd.CommandText = cmd.CommandText.Replace("$CARDNO$", pSYAINCD)
38
-
39
- Using da As New SqlDataAdapter(cmd)
40
- da.Fill(loc_dataset)
41
- da.Dispose()
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
- Else
33
+ ```
51
- SYAINCD_CHK = False
52
34
 
35
+ このコードで起動し、試しに0070000018000390というカードのデータを取得しようとカード記載の6桁180003を入力したところ、データが見つからないというエラー表示が出ました。しかし、カードの16桁すべてを入力したところデータの取得ができました。
36
+ SQLServerにて
37
+ ```
38
+ SELECT [CARDNO]
39
+ ,[KINGAKU]
53
- End If
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
- SQLコマンド where CARDNO LIKE '$CARD$'+'$CARNO$'+'%'のうち、$ラジオボタン条件分け
45
+ と入力し実行してもデータ取得ができたのでwhere CARDNO LIKE '%'+'$CARNO$'+'%'の部分がまずかったのかと思すがどうすればよいのでしょうか?