人に聞けない痔の悩み、これでスッキリ >>

バインド変数の使い方がわかりません。

OraDatabase1.Parameters.Remove "SYAIN_ID"
OraDatabase1.Parameters.Add "SYAIN_ID", "00000000", 1
OraDatabase1.Parameters("SYAIN_ID").serverType = 1

このようにバインド変数をまず定義すると思いますが
"00000000"の意味が良くわかりません。
0でも使えますか?
それともバインド変数として使用するフィールドのものと同じ長さに指定しないといけないですか?
例えば
select * from T_SYAIN a where a.SYAIN_ID = :SYAIN_ID
でSYAIN_IDはvarchar(8)とした場合
SYAIN_IDはvarchar(8)なので "00000000"と指定するべきなのですか?

このQ&Aに関連する最新のQ&A

A 回答 (1件)

>select * from T_SYAIN a where a.SYAIN_ID = :SYAIN_ID



の例ですと、「何を検索したいのか」、あるいは、「データベースにどのようなデータが登録されているか」によります。
VARCHAR(8) のフィールド SYAIN_ID が "0" のデータを検索するのであれば、"0" を指定すればよいでしょうし、SYAIN_ID が "00000000" のデータを検索するのであれば、"00000000" を指定すればよいと思います。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QSELECTで1件のみ取得するには?

こんにちわ。
いまORACLE9iを使用している者です。

ACCESSでは
SELECT TOP 1 項目名 FROM テーブル名
ORDER BY 項目名;
で並べ替えたデータ群のうち,先頭の1件だけを
取ることができますが,
ORACLEでそのような機能(SQL)はあるでしょうか?
教えてください。
よろしくお願いします。

Aベストアンサー

order by と rownum を併用する場合は注意が必要です。

[tbl01]
cola | colb
------------
1000 | aaaa
1001 | bbbb

というデータがある場合、
select cola from tbl01 where rownum < 1 order by cola desc;
とすると、「1001」ではなく、「1000」が返されます。
これは、order by の前に rownum < 1 が適用されてしまうからです。

解決するには、
select aaa from (select cola aaa from tbl01 order by cola desc) where rownum = 1;
とすれば良いです。

QVB6 配列を初期化したい

VB6でループさせて配列に値を入れて、計算させて最終的に求めたい値をRとします。そのときループで繰り返すためか同じ配列に値を入れてどんどん値がでかくなりRの値がおかしくなってしまいます;
おそらく問題は一回前に入れた配列がそのままのこってしまってるからなのだと思うのですが;
配列の中の値をクリアする方法はないものでしょうか?
一応、配列=0として初期化しようとしても値は変わらず前のが残ったままになってしまっています;
どなたかわかる方いらっしゃいましたらご回答宜しくお願いします

その他何かいい方法があればそれも教えていただけたらと思います

Aベストアンサー

Eraceステートメントを使用

  Dim a() as Long
  Dim s(100) as String
  Dim x() as Long

  Erase a     ’要素が0になる
  Erase s     ’要素が""になる

  Redim x(100) as Long

  Erase x      ’メモリを解放

注)VB2005の場合は動作が異なるので注意して下さい。

QForm_Load と Form_Activate のタイミング

あるデータ入力アプリを作っています。
親フォーム(Form0)で番号を決め、子フォーム(Form1,Form2,Form3,Form4) でデータ入力し、それぞれの子フォームを出るとき(Unload Me) に、変数にsaveしています。それを親フォーム(Form0)で登録を選択したとき、入力データをチェックしてDBに格納しています。
すでにDB格納済のデータの場合、親フォームでDBから変数に読み込み、子フォームのForm_Loadで展開しています。
そこで困っているのは、親と子のフォームを行き来するときにデータの表示で前のが残っていたり、消えてしまったりします。
Form_LoadとForm_Activateを通過するタイミングが、ちゃんと理解できていないためコードの記述位置が不適切なのだと思います。

Form_Load と Form_Activate の実行タイミングについて、お教えください。

Aベストアンサー

Form_Loadは、フォームがロードされたときです。
ロードされる条件は、
1.フォームがスタートアップに指定されているとき、アプリが実行された直後。
2.Show メソッドが呼ばれたとき
3.Loadメソッドが呼ばれたとき
4.フォームに貼り付けられたコントロールのプロパティが参照されたとき
5.フォームに貼り付けられたコントロールのメソッドが呼ばれたとき
です。

ただし、一度ロードされると、Unloadされるまで呼ばれません。


Form_Activateは、フォームがアクティブになったとき、つまり、キャプション(ウィンドウのタイトルバー)の色が変わったときです。

QVBとアクセスでSQL文に変数を使いたいのですが

したいことはレコードの挿入をSQL文で変数を使用して処理したいのですがうまく動作してくれません

StrSQL_1 = _
"insert into 行先情報テーブル (社員ID, 行先, 帰社予定時刻, 備考)" & _
"values (7,'(変数1)','(変数2)','(変数3)')"

変数の部分が置き換わりません、いろいろ調べてみたのですがどうもわかりませんvaluesでは変数を使えないのでしょうか?

もしそうだとするとどのようにすればレコードを挿入するSQL文で変数を利用できるのかをおしえていただけないでしょうか

Aベストアンサー

文字列なんで、&で連結すればOKです。

StrSQL_1 = _
"insert into 行先情報テーブル (社員ID, 行先, 帰社予定時刻, 備考)" & _
"values (7,'" & 変数1 & "','" & 変数2 & "','" &(変数3)& "')"

QMAX値を条件にデータを取得するには?

SQL文で困っています。
ご教授下さい。


下記のようなデータがあった場合、それぞれの区分毎に
年月が最大(最新)のデータを取得したいです。
(実際には1レコードにその他項目があり、それらも取得します。)
<検索対象データ>
区分 年月   金額
-----------------------------
A   200412  600
A   200503  560
B   200311  600
B   200508  1000
B   200504  560
C   200508  400
C   200301  1100


<取得したいデータ>

区分 年月   金額
-----------------------------
A   200503  560
B   200508  1000
C   200508  400

よろしくお願いします。

Aベストアンサー

テーブル名をXXXとすると次のようなSQLでよいと思います。(最善の方法かどうかは自信がないですが)

select B.* from (select 区分, max(年月) as 年月 from XXX group by 区分) As A
inner join XXX as B on A.区分 = B.区分 and A.年月 = B.年月
order by B.区分

QDataGridViewで指定したセルの値を取得

こんにちは。

VB2008のDataGridViewで指定したセルの値を取得をする方法がわかりません。
どなたか教えてください。

Aベストアンサー

こんばんは.

 Dim Data As String
 Data = Me.DataGridView(0, 2).Value
 MsgBox(Data)

みたいな感じで取れないですかね???

QスプレットシートのGetTextについて。

 今、VBでスプレットシートを使っています。
 スプレットシートに入っている値を配列に入れたいと思ってます。
 そのとき使う関数はスプレットシート名.GetTextですよね?
 そのGetTextの引数が行と列までは分かりますが、第3引数のVarの
 意味が分かりません。
 ヘルプを読んでも理解できなくて、ネットでも調べてみましたが、
 スプレットシートに関するページがなかなか見つからなくて
 今も分からない状態です。

 どなたかスプレットについて載っているページをご存知の方が
 いましたら、紹介してください。
 また、この場で教えてくださってもかまいません。

 すみませんが、よろしくお願いします。

Aベストアンサー

VarにGetTextされた内容が入ります。

例えばですが
fspreed1.GetText ColCnt, RowCnt, Var
と記述すると、スプレッドシートの横方向はColCntで指定しますね。
スプレッドシートの縦方向はRowCntで指定しますね。

で、Varにそのセルの内容が設定されます。

QDATE型変数を初期化する方法

他の変数みたいに
ゼロや""では初期化は出来ないのでしょうか?

Aベストアンサー

初期化とはプログラムループに入る前にある値にプログラムコーディングで設定することですよね。
下記によると、「出来る」といえるのではないですか。
それとも例えば、INISIALIZE関数やメソッドがあるか
と言う質問ですか。
VB(VBAですか。そこをはっきり書かないと。)で
下記サンプルプログラムをやって見ました。
Private Sub Form_Click()
Dim d As Date
d = "0"
Form1.Print "ここを通りました"
Form1.Print d
Form1.Print Format(d, "yy/mm/dd")
MsgBox Year(d)
MsgBox Month(d)
MsgBox Day(d)
End Sub
Form1には00:00:00、89/12/30が表示され、MSGBOXでは1899、12,30(31で無い)と表示されました。
こう言うことはエクセルの日付に似ており、シリアル値
のスタート日を表示しているところから、その値でセットされているはず。したがってd+1とか整数的演算が可能と
言うことであり、表示する時だけyyyy/mm/ddほか書式に
したがってVBが表示してくれると思う。
ただこの利用法は思いつかないが。
""に付いてはやっていませんが。

初期化とはプログラムループに入る前にある値にプログラムコーディングで設定することですよね。
下記によると、「出来る」といえるのではないですか。
それとも例えば、INISIALIZE関数やメソッドがあるか
と言う質問ですか。
VB(VBAですか。そこをはっきり書かないと。)で
下記サンプルプログラムをやって見ました。
Private Sub Form_Click()
Dim d As Date
d = "0"
Form1.Print "ここを通りました"
Form1.Print d
Form1.Print Format(d, "yy/mm/dd")
MsgBox Year(d)
MsgBox Month(d)
MsgBox Da...続きを読む

QVBからOracle接続が出来ません。

こんにちは。

VisualBasic6.0EnterprizeEdition から Oracle8i の接続を試みております。
接続が出来ません。コードは本のものをそのまま書いたので、間違いはないと思います。

Private Function OraOPN() As Boolean

Dim strDB As String * 30 'サービス名
Dim strUID As String * 30 'ユーザー名
Dim strPWD As String * 30 'パスワード
Dim strUP As String
Dim strMSG As String 'エラー時のメッセージ


On Error GoTo Ora_Error

strDB = Trim(txtLogon(2).Text)
strUID = Trim(txtLogon(0).Text)
strPWD = Trim(txtLogon(1).Text)
strUP = strUID & "/" & strPWD

strMSG = "データベースへの接続ができません"

Set OraSession = CreateObject("OracleInProcServer.XOraSession")
Set OraDatabase = OraSession.OpenDatabase(strDB, strUP, &H1&)

OraOPN = True

Exit Function

Ora_Error:

OraOPN = False
Call MsgBox(strMSG & vbCrLf & " システム管理者に連絡してください" & vbCrLf & vbCrLf & "", vbCritical)
End

End Function

以上のコードで、接続できません。本に書いてあるとおりそのままのコードです。オラクルサーバとVBプログラムは同一マシン上に置いてあります。

私は、Java専門でVBはわかりません。誰かわかる方がいたら、教えてください。よろしくお願いします。

こんにちは。

VisualBasic6.0EnterprizeEdition から Oracle8i の接続を試みております。
接続が出来ません。コードは本のものをそのまま書いたので、間違いはないと思います。

Private Function OraOPN() As Boolean

Dim strDB As String * 30 'サービス名
Dim strUID As String * 30 'ユーザー名
Dim strPWD As String * 30 'パスワード
Dim strUP As String
Dim strMSG As String 'エラー時のメッセージ


On Error GoTo Ora_Erro...続きを読む

Aベストアンサー

言葉が足りてないようなので、再度説明します。

>Net8 Easy Configを使わなくても良いと書いてありました。
「全く使用しないでもよい」と言うわけでもないのですが、、、

普通なら使用します。
>オラクルサーバとVBプログラムは同一マシン上
>会社のパソコンはSQL*PLUS を起動する際に、パスワードとユーザーは入力しますが、ホスト文字列は空白のままなので
とあるので、Net8 Easy Configを使用してDBを指定するような、設定はいらないと言うことです。


ですので
>Set OraDatabase = OraSession.OpenDatabase(strDB, strUP, &H1&)
の部分を
Set OraDatabase = OraSession.OpenDatabase("", strUP, &H1&)
とすることで、Net8 Easy Configを使用しないで接続できると思ったのです。


次の変数を使用しない値を直で与えて実行してもだめでしょうか?
Set OraDatabase = OraSession.OpenDatabase("", "SQLPLUSで使用しているID/SQLPLUSで使用しているPASS", &H1&)


ちなみ現在会社の環境はSQL鯖なので、日中は実験済みのお答えは即座にはお答えできません。

言葉が足りてないようなので、再度説明します。

>Net8 Easy Configを使わなくても良いと書いてありました。
「全く使用しないでもよい」と言うわけでもないのですが、、、

普通なら使用します。
>オラクルサーバとVBプログラムは同一マシン上
>会社のパソコンはSQL*PLUS を起動する際に、パスワードとユーザーは入力しますが、ホスト文字列は空白のままなので
とあるので、Net8 Easy Configを使用してDBを指定するような、設定はいらないと言うことです。


ですので
>Set OraDatabase = OraSession...続きを読む

Qラジオボタンの初期指定

ラジオボタンを12個使用する画面を今作っているのですが、初期立ち上げ時に1番目のラジオボタンを選択した状態にするのはどうすれば良いのでしょうか?

プログラムの流れ上選んでいなくても、1番目を選んだ状態に次のウィンドウは開くのですが、聞く話で、それは不安定要素があるって聞いた物ですから。

Aベストアンサー

VB.NETだったら
デザイン時に
Checkedをtrue


人気Q&Aランキング