質問編集履歴

1

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

2019/10/18 06:08

投稿

ryuuzu
ryuuzu

スコア30

test CHANGED
File without changes
test CHANGED
@@ -2,39 +2,27 @@
2
2
 
3
3
  カードの番号を入力してデータを検索してレコードを重複しないように
4
4
 
5
- 取得するシステムを作りたいのですがカード番号はデータ的は16桁ながらカードそのものに記載された番号は6桁のみで、カードの種類も3種類あります。ややこしくて申し訳ないのですが
5
+ 取得するシステムを作りたいのですがカード番号はデータ的は16桁ながらカードそのものに記載された番号は6桁のみです。ややこしくて申し訳ないのですが
6
6
 
7
7
 
8
8
 
9
- ・1~8桁目は3種類のカードそれぞれの固有の番号で
10
-
11
- ードA:00700000または00710000
9
+ ・1~8桁目は会社のコード0070000000710000の2択です。
12
-
13
- カードB:00800000または00810000
14
-
15
- カードC:00600000または00610000
16
-
17
- というものです。
18
10
 
19
11
 
20
12
 
21
- ・9~14桁目はカードに記載されている個別番号で、同種のカードであれば重複しませんが他種のカードは重複する可能性があります。
13
+ ・9~14桁目はカードに記載されている個別番号で、重複しません
22
14
 
23
15
 
24
16
 
25
- 15,16桁目はチェックデジットのコードで、1~14桁目が重複していなければ重複しません
17
+ 15,16桁目はチェックデジットのコードで
26
18
 
27
19
 
28
20
 
29
- とい構造です。
21
+ カード記載の9~14桁目を入力するだけでレコードを取得できるよにしたく、ビジュアルスタジオにVB以下のコードを組みました。DBMSはSQLServerです。
30
22
 
31
23
 
32
24
 
33
- カードの種類をラジオボタンで選択してカード記載の番号(=9~14桁目)を入力すればレコードを取得できるようにしたいのですが
34
-
35
- ```ここに言語を入力
36
-
37
- Private Function CARD_CHK(ByVal pSYAINCD As String)
25
+ ```Private Function CARD_CHK(ByVal pSYAINCD As String)
38
26
 
39
27
  Try
40
28
 
@@ -70,52 +58,32 @@
70
58
 
71
59
 
72
60
 
73
- cmd.CommandText = cmd.CommandText.Replace("$CARDNO$", pSYAINCD)
61
+ cmd.CommandText = cmd.CommandText.Replace("$CARDNO$", pSYAINCD)
74
62
 
75
-
63
+ (文字数の関係で以下略)
76
64
 
77
- Using da As New SqlDataAdapter(cmd)
78
-
79
- da.Fill(loc_dataset)
80
-
81
- da.Dispose()
82
-
83
- End Using
84
-
85
- cmd.Dispose()
86
-
87
- End Using
88
-
89
- conn.Close()
90
-
91
- conn.Dispose()
92
-
93
- End Using
94
-
95
- If loc_dataset.Tables(0).Rows.Count = 1 Then
96
-
97
- SYAINCD_CHK = True
98
-
99
- Else
65
+ ```
100
-
101
- SYAINCD_CHK = False
102
66
 
103
67
 
104
68
 
69
+ このコードで起動し、試しに0070000018000390というカードのデータを取得しようとカード記載の6桁180003を入力したところ、データが見つからないというエラー表示が出ました。しかし、カードの16桁すべてを入力したところデータの取得ができました。
70
+
71
+ SQLServerにて
72
+
73
+ ```
74
+
75
+ SELECT [CARDNO]
76
+
77
+ ,[KINGAKU]
78
+
105
- End If
79
+ ,[NAME]
80
+
81
+ FROM [PREPAID].[dbo].[ZANDAKAMST]
82
+
83
+ where CARDNO LIKE '%'+'180003'+'%'"
106
84
 
107
85
 
108
86
 
109
- Catch ex As Exception
110
-
111
- SYAINCD_CHK = False
112
-
113
- MsgBox(ex.Message)
114
-
115
- MsgBox(ex.Source)
116
-
117
- End Try
118
-
119
87
  ```
120
88
 
121
- SQLコマンド where CARDNO LIKE '$CARD$'+'$CARNO$'+'%'のうち、$ラジオボタン条件分け
89
+ と入力し実行してもデータ取得ができたのでwhere CARDNO LIKE '%'+'$CARNO$'+'%'の部分がまずかったのかと思すがどうすればよいのでしょうか?