2011-12-20 2 views
4

カナダの顧客にさらにサービスを提供するため、一部の古い従来のASPページに表示されている日付をローカライズしようとしています。私たちはSetLocale()vbスクリプト関数を使い始めました。これは、ユーザー入力の日付を正しく処理することで成功しました。従来のASPのレコードセットから日付をローカライズ

しかし、私は、ADODB.Recordsetで返された日付がページのロケールを尊重すると予想していました。次のコードを考えてみましょう:

SetLocale 4105 

''' 
' Get a list of Employees 
SQL = "SELECT Firstname, Lastname, HireDate FROM Employee" 
Set conn = Server.CreateObject("ADODB.Connection") 
    conn.Open Application("ConnectionString") 
Set cmd = Server.CreateObject("ADODB.Command") 
cmd.ActiveConnection = conn 
cmd.CommandType = 1 
cmd.CommandText = SQL 
Set rst = Server.CreateObject("ADODB.Recordset") 
rst.CursorLocation = 3 
Set rst = cmd.Execute 

ページに出HIREDATE列を書くとき、それはMM/DD/YYYY(当社のサーバーで使用される形式)としてレンダリングされます。

注意すべきいくつかのこと:

  1. 我々は(そう、サーバのローカリゼーション/地域を変更するオプションではありません)同じサーバー上で米国とカナダの顧客の両方にサービスを提供する必要があります。これは純粋なコードソリューションでなければなりません。
  2. タイプ名最初( "HireDate")が "Field"であることがわかりました。

このシナリオでSQLサーバーからの日付値をローカライズする適切な方法は何ですか?

+0

は、あなたが明確にできます試してみてください、あなたは '4105'のSetLocale日付の形式にもかかわらず、期待されていないとことを言っていますか? BTWは 'TypeName(rst(" HireDate "))を使用します。値)'あなたはどうしますか? – AnthonyWJones

答えて

3

FormatDateTime関数を使用して正しく表示する必要があると思います。

FormatDateTime(rst("HireDate").Value, vbShortDate) 
1

RST( "HIREDATE")フィールド

RST( "HIREDATE")である。値が日付

RST( "HIREDATE")となります。Value.ToString()、日付を返します。ステートメントが実行されるマシンのロケールの文字列として、ほぼ確実にマシンIISが実行されており、ボックスSQLサーバーが破損している可能性があります。

GetLocale/SetLocaleを検索する方法と、クライアント側のjaavscriptを使用して日付を文字列として表示する方法があります。

+1

それは簡単にそれを混ぜる。逆のことをしているときに.NETのコードはそれではないですか? VBScriptのプリミティブ型では、.ToString()メソッド(実際にはこれまでどんなメソッドもありません)はありません。 – AnthonyWJones

+0

一度VBScriptをやりましたか? Cstr?いずれにしても、私は彼がサーバー側を話していると思った。 –

関連する問題