2009-05-22 16 views
0

私のアプリケーションにはVB6が使用されています。私はSQLクエリから取得したレコードセットをExcelに取り込みました。 Time_periodと呼ばVB6の日付形式

1つの列は、私は、処理のために別のSQLクエリにこれらの入力を渡す必要があり

"2/31/2006" 
"12/29/2000" 
etc. 

のような値を持っています。オラクルは「2009年7月23日」、「1998年2月1日」などのタイプの入力を受け入れるため、フォーマットと混乱することはほとんどありません。

VB6では、あるフォーマットから別のフォーマットへの変換を手伝ってもらえますか?

+0

元のSQLクエリは、RecordSetオブジェクトの作成に使用するものを投稿してください。 – Tomalak

+0

これはおそらく元の質問者とは関係ありませんが、Excel、VB6 Format文などで使用されている日付形式は、地域の設定によって異なります。私は、あなたのm/d/yyy日付形式からあなたが米国にいると推測しています。私は、以下に掲載されているソリューションは、世界の他の地域の一部の人々にとってはうまくいかないことを記録したいと思います。 – MarkJ

答えて

2

使用形式として。

Debug.Print Format$(Now, "dd-mmm-yyyy") 

これはあなたのケースでは機能します。

次の形式(ISO規格)を使用して試みることができる:

Debug.Pring Format$(Now, "yyyy-MM-dd") 
+0

地域の設定が英語の場合にのみ動作します。それ以外の場合は、月の名前が別の言語で表示されます。私はオラクルが反対するかもしれないと思います。 – MarkJ

+0

ISO規格が間違いなく好ましいです – barrowc

1

薄暗いOracleDateの文字列として 薄暗いexcelDateのDateTime

oracleDate = Format$(excelDate , "dd-mmm-yyyy") 
+0

"Dim excelDate As DateTime" - VB6にはDateTimeデータ型がありません。おそらく、日付を意味しましたか? – onedaywhen

1

レコードセットから、あなたの日付を取得した場合、あなたは日付変数に格納し、ちょうど取得するには、次の書式設定機能を呼び出すことができます

この値を適切な日付区切り文字と共にSQLクエリに渡すことができます。 (パラメータを使用しない場合)

nullの値は、上記の機能では機能しないため、チェックすることもできます。

0

SQLコードで2つのクエリの間にJOINを作成することで、あるクエリの結果セットを別のクエリに正常に渡すことができます。うまくいけば、カラムTime_periodの日付の値はすでに一時的な型です。そうでなければ、SQLを使用してキャストすることができます。データが異なるデータベース(OracleやExcelなど)にあっても、ACE/Jet(a.k.a.MSアクセス)を使用して、直接またはインクテーブルを使用して2つを結合するクエリを作成できます。あなたが達成しようとしていることの詳細を、してください。

1

ここにはExcel VBAのコードスニペットがあり、VB6でいくつかの調整が必要です。

Sub temp() 
    Dim lConn, lRs, sSQL As String 
    Set lConn = CreateObject("ADODB.Connection") 
    Set lRs = CreateObject("ADODB.Recordset") 

    lConn.Open "DSN=yourdns; UID=youruid; PWD=yourpwd;" 

    Dim oWS As Worksheet 
    Set oWS = Worksheets(1) 

    sSQL = " SELECT * FROM Product WHERE Last_Upd_Date > to_date('" & oWS.Range("A1").Value & "', 'MM-DDD-YYYY') " 
    lRs.Open sSQL, lConn 

    Debug.Print lRs.EOF 
    lRs.Close 
    lConn.Close 
End Sub 

これが役に立ちます。

+0

ありがとう!それを悪用する – divinci