Date: Tue, 5 Aug 2003 12:58:40 +0900
From: "koyama" <koyama@kensui.on.arena.ne.jp>
小山といいます。
堀川様ご回答ありがとうございました。
月末に業務が多忙だったためなかなか出来ずに返事が遅れてしまいました。
> http://www.horikawa.ne.jp/msde/gihyo/sec23.html
> http://www.horikawa.ne.jp/msde/gihyo/sql23/form12.html
この部分を参考にして下記の様にVBA側のコードを書きました。
=================================================
Dim nyuryoku As String
Dim hinmeiNO As String
Dim irisu As String
Dim r$
Set cn = CurrentProject.Connection
'変数の設定
nyuryoku = Forms(Yobidasi_F).Controls("入力日")
hinmeiNO = Forms(Yobidasi_F).Controls("品名コード")
irisu = Forms(Yobidasi_F).Controls("入数1")
Set rs = New ADODB.Recordset
Set cmd = New ADODB.Command
rs.CursorLocation = adUseServer
rs.CursorType = adOpenStatic
rs.LockType = adLockOptimistic
r$ = "EXEC 入力データ呼出_store @nyuryoku=" & nyuryoku & ",@hinmeino=" &
hinmeiNO & ",@irisu =" & irisu
rs.Open r$, cn, , , adCmdText ←
<<以下略>>
==================================================
しかし”←”の所デバッグが起き
「行1:'/'のあたりで不正な構文があります。」と表示されます。
プログラムを作って"osql"コマンドから実行させてバグを見つけてみたのですが、
どうも文字列から日付型にうまく変換できていないような気がします。
1.エラーの出るストアド==========================================
ALTER PROCEDURE 入力データ呼出_store
(
@nyuryoku varchar(100),
@hinmeino varchar(100),
@irisu varchar(50)
)
AS
SET NOCOUNT ON
DECLARE @hinmeiid int
declare @nyuryokudate datetime
declare @hinmeicode int
declare @irisudata float
set @nyuryokudate=convert(datetime,@nyuryoku)
set @hinmeicode=convert(int,@hinmeino)
set @irisu=convert(float,@irisu)
set @hinmeiid=(select 品名入力ID from 品名入力T where 入力日=@nyuryokudate
and 品名コード=@hinmeicode and 入数=@irisudata)
select b.品名入力ID,b.入力日,b.品名コード,b.入数,a.店舗入力ID,a.区分コード
,a.価格,a.店舗コード,a.個数,数量,a.合計金額 from 店舗入力T as a inner join
品名入力T as b on a.品名入力ID=b.品名入力ID
where a.品名入力ID=@hinmeiid order by a.店舗入力ID
RETURN
========================================================
2.うまく実行できたトランザクション(osqlで実行させまし
た。)===========================
USE 天満屋EOSDB
GO
declare @nyuryoku datetime
declare @hinmeino int
declare @irisu float
DECLARE @hinmeiid int
declare @strSQL varchar(200)
set @nyuryoku=convert(datetime,'2003/8/4')
set @hinmeino=convert(int,'70')
set @irisu=convert(float,'4.0')
set @hinmeiid=(select 品名入力ID from 品名入力T where 入力日=@nyuryoku and
品名コード=@hinmeino and 入数=@irisu)
select b.品名入力ID,b.入力日,b.品名コード,b.入数,a.店舗入力ID,a.区分コード
,a.価格,a.店舗コード,a.個数,数量,a.合計金額 from 店舗入力T as a inner join
品名入力T as b on a.品名入力ID=b.品名入力ID
where a.品名入力ID=@hinmeiid order by a.店舗入力ID
GO
==================================================
文字列から日付型に変換するために、"convert関数"を使用したのですが、
このやり方がだめなのでしょうか?
2.ではうまくいったのですが、1.ではだめでした。
何か他に良い方法があるのでしょうか?
よろしくお願いします。
長文になって失礼しました。
[MSDE/SQLServerに関して、今、どんなことにお困りですか?] |
よろしければお困りの内容を、電子メールで教えて下さい。 |
質問を電子メールで作成する
|
[ウィンドを閉じる][MSDE/SQLServer FAQ ][MSDE / MSDE2000 技術サポート情報一覧]
|