質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.45%
SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

解決済

2回答

566閲覧

SQLServerからの返しについて

wakky0512

総合スコア1

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2023/03/29 00:36

実現したいこと

・SQLServerからの返しをACCESS上で表示したい

前提

ここに質問の内容を詳しく書いてください。
よろしくお願いいたします。
ACCESSで会員管理システムを作成中です。
ACCESSとSQLServer2014をODBC接続しています。
ACCESSからSQLServerのストアドを実行させています。
名称マスタ登録の際、同じIDや名前で登録すると「その○○はすでに使われています」のメッセージを表示させたいのですが、でません。追加・更新は出来ています。
SQLServerManagementStudio内で実行すればメッセージの所には「○○使われています」と出ます。

発生している問題・エラーメッセージ

問題:メッセージがACCESS側で出ない。 エラーメッセージ:無し

該当のソースコード

ALTER PROCEDURE [dbo].[stpGetMasCategoryBy編集中] -- Add the parameters for the stored procedure here @Cate nvarchar(40), @CateID int, @Bikou nvarchar(200), @StartDate date, @User nvarchar(20), @Jotai nvarchar(1) AS SET XACT_ABORT ON; BEGIN TRAN; -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; -- Insert statements for procedure here DECLARE --@count int, @Msg nvarchar(200)-- IF @Jotai = 1 BEGIN IF NOT EXISTS(SELECT intCateID FROM tblMasCategory WHERE intCateID = @CateID) --同じID(@CateID)が無い場合 BEGIN IF NOT EXISTS(SELECT strCate FROM tblMasCategory WHERE strCate = @Cate) BEGIN --同じ名前(@Cate)がない場合 INSERT INTO tblMasCategory (intCateID,strCate,datStartDate,datCreateDate,strCreateUser) VALUES (@CateID ,@Cate ,@StartDate ,getdate() ,@User) END ELSE --同じ名前(@Cate)がある場合 BEGIN set @Msg = 'その名前は使われています1' END END ELSE --同じID(@CateID)がある場合 BEGIN set @Msg = 'そのIDは使われています1' END  END IF @Jotai = 2 BEGIN IF NOT EXISTS(SELECT strCate FROM tblMasCategory WHERE strCate = @Cate) --同じ名前(@Cate)がない場合 BEGIN UPDATE tblMasCategory SET strCate = @Cate, datUpdateDate = getdate(), strBikou = @Bikou, strUpdateUser =@User WHERE intCateID = @CateID END ELSE BEGIN --同じ名前(@Cate)がある場合 set @Msg = 'その名前は使われています' END END COMMIT TRAN; print @msg

試したこと

・[set @Msg =.....]の箇所を[PRINT......]でも試しましたがダメでした。
・[RETURN.....]でも試しましたがダメでした。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

こちらが参考になるかもしれません。

■ ADO を使用してストアド プロシージャの値を取得する - SQL Server
https://learn.microsoft.com/ja-jp/troubleshoot/sql/connect/retrieve-values-stored-procedure

投稿2023/03/29 03:07

cx20

総合スコア4633

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wakky0512

2023/03/29 06:31

回答ありがとうございました。表示出来ました。 時間差で別の方をベストアンサーとさせていただきました。
guest

0

ベストアンサー

ストアドでエラーを発生させ、Access側で実行時のエラーとして検知するようにしてみては。
※以下参考
[SQLServer] 意図的にエラーを発生させる(RAISEERROR、THROW)

投稿2023/03/29 03:04

sazi

総合スコア25213

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wakky0512

2023/03/29 06:29

表示出来ました。出来た瞬間、声出てしまいました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.45%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問