• 締切済み

入力禁止文字の設定方法について・・・VB?SQL?

初歩的な質問でしたらすみません。。。 VB6でSQLServer2000のDBを操作しています。 入力フォームの「名称」欄に「'」「,」半角のアポストロフィやカンマの入力をすると、 SQLのテーブルへ書き込み時にエラーとなってしまいます。 「名称」のため、半角の「'」「,」は禁止にして、全角の「’」「,」は入力可能にしたいです。全角半角の判別可能なのでしょうか? フォームで[登録]ボタンを押した時に「名称」欄に「'」「,」が含まれているかのチェックをしたいのですが、 「'」「,」文字をどの様に記述してチェックをすればよろしいのでしょうか。 どなたかご存知の方ご教授いただけたらと思い質問させていただきました。 どうかよろしくお願いいたしますm(_ _)m

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

入力受付後、その名称の文字列の中の、問題の半角記号を、全角に置換(Replace)してしまえばどうですか。

回答No.2

んと、エラーになる・ならないは横に置いといて。 そもそも「名称」という欄に入る値として半角の「'」や「,」は業務ルール上、正当ですか? それとも不正ですか? もし「エラーになるから禁止文字にしたい」というのであれば、登録の方法を変えれば禁止にしなくて済みます。 恐らくプログラムの中で動的に「UPDATE ~」なり「INSERT ~」の SQL 文字列を完全に組み立てているのでしょうが、そのやり方を変更すれば先の半角文字を登録に使用することが可能になります。 具体的には ADO の Command オブジェクトと Parameter オブジェクトを使って更新します。 これならば更新したい値は Parameter オブジェクトに格納されるので、「SQLインジェクション」と呼ばれる、SQL Server を攻撃するような呪文にも強くなります。 MSDN : ADO の Command オブジェクト http://msdn.microsoft.com/library/ja/jpado260/htm/mdobjcommand.asp MSDN : ADO の Parameter オブジェクト http://msdn.microsoft.com/library/ja/jpado260/htm/mdobjparameter.asp

  • fortranxp
  • ベストアンサー率26% (181/684)
回答No.1

こういうことでしょうか? Private Sub Command1_Click() Dim i As Integer i = InStr(Text1.Text, "'") If i > 0 Then MsgBox "「'」があります。" Text1.Text = "" Text1.SetFocus End Sub

関連するQ&A

  • VB2005 テキストボックスの最大入力値設定について

    いつもお世話になっております。 VB2005のテキストボックスで、全角半角入り混じっての 最大30バイトまで入力可能にしたいのですが、現在ある MaxLengthプロパティではうまく制御ができません。 テキストのロストフォーカスや、チェンジイベント時に チェックする以外に方法はないのでしょうか。 何かもっといい方法があれば教えて頂きたいのですが・・・。 どうか宜しくお願いいたします。

  • データを書き込む際、全角数値を半角で登録するには

    ASPにおいてSQL-SERVERにデータを書き込む際に全角数値だったら半角数値になおして書き込むことは可能でしょうか?? 例:1234→1234 もし可能ならばご教授お願いします!!!よろしくお願いします!!! ちなみに理由はHTMLフォーム上で電話番号等数値入力のコントロールで全角で入力してしまうことがある為、対応として全角を半角で登録ってことになりました・・・。現在はバイト数で半角全角チェックを行っていますが、このチェックはなくすことになります。。。だれか助けてください。。。IMEの制御は行っていません。サーバはWINDOWS2000、処理ブラウザはIE、DBはSQL-SERVER2000を使用しています。

  • VB2005のSQLにて定義した変数の使用について

    VB2005、DBはSqlserver2005 についてです。 以下のようなSQLにて変数に値を設定して、フォーム上のテキストボックスにその値を 表示させたいのですが、うまくいきません。 どうしたらよいかアドバイス頂けると助かります。 <SQL> command.CommandText = "BEGIN DECLARE @SQL-todoufuken_code VARCHAR(20) " & _ "SET @SQL-todoufuken_code = (SELECT MAX(todoufuken_code) FROM tbl_todoufuken)" & _ "END" <テキストボックスへの設定> txtTodoufuken_code.Text = @SQL-todoufuken_code

  • 文字入力の切り替えができない

    今まで漢字入力するときは「カタカナひらがな」キーを、半角の英数字を入力するときは「半角/全角」キーを押せば入力できていたのですが、ウィルス対策ソフトを使って検出されたスパイウェアを全て削除した後から、IE上ではalt+「半角/全角」キーを使わないと漢字入力と英数字入力ができず、アンダーバーやアポストロフィが出ません(例えば…半角英数字入力でshift+7キーを押すと&がでる)。削除してはいけないスパイウェアを削除してしまったからでしょうか?元に戻す方法がわかる方アドバイスください。お願いします。ちなにwordでもなります。メモ帳だけは今まで通りです。

  • 文字入力の設定

    直接入力でメアドを入力しようと思った時に、間違えて日本語入力のまま入力してしまい、あわてて直接入力に変えようと「半角/全角」ボタンを押すことがあります。 すると会社のパソコンでは、それまで入力していた全角文字が消えて、新しく直接入力した半角英数だけが入力されます。 しかし家のパソコンでは、途中まで入力していた全角文字が確定し、日本語と英数が混じったものが入力されてしまいます。 できれば会社のパソコンのように、確定せずに消えるように設定したいのですが、どうしたらいいのでしょう? WindowsXP ATOK2006を使用しています

  • VBでSQL-serverをプログラムする

    VBでmdbファイルを操作するプログラムを勉強していますが、データベースをサーバー管理するならば、AccessではなくSQL-serverなどを使った方が良いと聞きました。 質問なんですが、 SQL-serverには、Accessと同じようにユーザーフォームを使ってデータベースシステムを構築するような機能が付いているのでしょうか? そもそもOracle、dBase、SQL-serverといったデータベースソフトは、DBそのものを作成するソフトであって、DBシステムを構築するにはVBなどによるプログラム開発が必要なのでしょうか? 分かりにくい質問ですみません。

  • Excelで入力禁止文字を設定したい

    いつもお世話になって居ます。 以下のように特定のセルに入力の規制をしたいのですが、お分かりの方がいらしたらお手数ですがご教示ください。 A1セルの入力時に、「文字数を30文字以下、且つ特定の文字(仮にあ、い、う、え、お)を禁止し、さらに半角のみ」 A2セルの入力時に、「文字数を30文字以下、且つ特定の文字(仮にか、き、く、け、こ)を禁止し、さらに全角のみ」 A3のセルの入力時に、「文字数を20文字以下、且つ特定の文字(仮にあ、い、う、え、お、か、き、く、け、こ)を禁止し、さらに半角のみ」 何れもエラーメッセージがそれぞれの規制ごとに「文字数オーバー」「禁止文字を使用」「全角(半角)で登録」と表示できると助かります。 入力規制ですと「特定の文字のみ可能」となってしまい、希望通りに出来ませんでした。

  • VB.NETでSQLを作る時のカンマの対処

    こんにちは。 タイトルの通りなのですが、VB.NETでSQL文を作りたいのですが、カンマの対処について分からなかったので質問させて頂きました。 例えば、下記のようなテーブルとwindowsアプリケーションフォームがあったとします。 itemテーブル                 フォーム(□はチェックボックスだと思ってください。) item_id  item_cd  item_name        □ りんご ---------------------------------       □ ばなな 0001    0001    りんご        □ みかん 0002    0002    ばなな        □ めろん 0003    0003    みかん 0004    0004    めろん このフォームで、チェックボックスに印が付いているものを、SQL文の条件に加えたいと思っていますが、なかなか上手く書けません。 現在のソース sql="SELECT item_id,item_cd,item_name " _   & "FROM item " _   & "WHERE item_name IN (" If apple.checked = True Then   sql &= "'" & label1.text & "'," End If If banana.checked = True Then   sql &= "'" & label2.text & "'," End If         ・         ・         ・ このやり方だと、sql文の最後にカンマが残ってしまいます。 ですが、前カンマをやったところで構文的におかしくなってしまいます。 このようなとき、どのように対処すればよいのでしょうか? よろしければ、教えてください。

  • VBからCrystalReportsへSQL文を渡すには?

     VBからCrystalReportを呼び出し、CrystalReports側でSQL文実行させたいのですが、ヘルプ等を見ても方法がわかりません。  例えば・・・ 1 VBで入力画面を用意し、抽出条件を入れさせる。 2 入力された条件にてSQL文を生成しSQL-Serverから該当行を抽出する。 3 CrystalReportsで作表する。  VBでSQL文を生成し、例えばMDBに書き出し、それを単純にCrystalReportsで読むということは出来たのですが、中間ファイル(この場合はMDB)を作らずに同様のことができるのでしょうか?  つまり、VBから制御されたCrystalReportsでDBから条件抽出をかけつつ作表するということが可能か否か、可能であるならばその方法をご教授いただけると幸いです。

  • 入力エラー文に表示する最大入力文字数について

    DBを使ったwebアプリを制作しています。 例えば、名前を入力する欄でDBのカラムサイズが256だった場合、 その入力フォームのテキストフィールドでは ・maxlengthを256を指定 ・入力値が256バイト以上なら入力エラーにする。 と考えられ、入力エラー文には 「氏名は全角128文字(半角256文字)以内で入力して下さい」 のように出すことが想定できます。 ユーザが不特定多数だった場合、エラー文に堂々とDBのカラムサイズを 表示させることに躊躇しているのですが、最近のWebアプリのインターフェースではどうしているのでしょうか? 周りに誰も相談できる人がいなくて、困っています。。。 宜しくお願い致します。

    • ベストアンサー
    • HTML

専門家に質問してみよう