ASP(VBScript)でSQLサーバに日付と時間を以下のように記述して実行しても
うまくいきません。正しい記述方法をお分かりの方教えて
ください。

SQL="INSERT INTO master(日付) VALUES('" & "#" & Now & "#')"

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

A 回答 (3件)

「Now」っていうのは変数?関数?


現在の日時を取得するなら
SQL="INSERT INTO master(日付) VALUES('" & Now() & "')"
ですね。
    • good
    • 0

日付を「#」で区切るのはAccess独自のやり方で、SQLでは通常の文字列と同じように「'」(シングルクオート)で区切ります。


ですから、
SQL="INSERT INTO master(日付) VALUES('" & Now & "')"
が正解ではないでしょうか?

この回答への補足

Microsoft OLE DB Provider for SQL Server エラー '80040e07'

構文エラー。文字列から日付/時刻に変換できませんでした。
----
以上のようなエラーになってしまいます。

補足日時:2001/05/18 12:52
    • good
    • 0

insert into table values(now::datetime)でいきません?


datetimeじゃなくてtimestampだっけ?
よくおぼえてないや
    • good
    • 0

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

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

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

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

QAccessのクエリ。日付と顧客で売上合計をだす。

期間を指定して、顧客の売上を合計したいです。

2つのテーブルからクエリを作成しました。

tbl顧客
顧客番号
顧客名

tbl販売
販売番号
日付
顧客番号
金額

Q_売上
日付
顧客番号
顧客名
金額

∑をクリックして、金額の集計は[合計]にしています。
その他は、[グループ化]です。

日付の抽出条件は、
Between [開始] And [終了]
としています。

顧客毎に合計を出したいです。
よろしくお願い致します。

Aベストアンサー

日付の集計をグループ化ではなく、Where 条件にすれば
よろしいかと。

Qinsert時に日付のフィールドにnullを入れたい

テーブルに以下のフィールドがあります。
[No],[区分],[キーNo],[日付]
このテーブルに日付のデータのない、以下のようなデータをインサートしたいのですが、
[No],[区分],[キーNo]
1 ,kbn1 , key1


strSQL1 = "INSERT INTO テーブル1"
& " ([No],[区分],[キーNo],[日付])" _
& " VALUES ("1","kbn1","key1",NULL )"

とするとエラーが出てしまいます。日付フィールドに何も入れないようにinsert文を書くにはどうしたらよいでしょうか。
すみません、アドバイス等宜しくお願いします。

Aベストアンサー

strSQL1 = "INSERT INTO テーブル1"
& " ([No],[区分],[キーNo])" _
& " VALUES ("1","kbn1","key1")"
でよいのでは?
それより[日付]フィールドでNull許可してないのでは?

Qエクセルで日付が入力されたセルの隣のセルの金額を合計するにはどうするのでしょうか。

A1、C1、E1セルにはユーザー定義(d”日”)で数字を入れると日付になります。
各、隣セルB1、D1、F1には金額が入力されています。
G1には合計が入るようになっています。
例えば、A1とE1に日付が入力された時、B1とF1の合計がG1に。
その後、C1に日付が入力されたらG1がB1、D1、F1の合計になるようにしたいです。
よろしくお願いします。

Aベストアンサー

こんばんは!
横からお邪魔します。

G1セルに
=SUM((A1>0)*B1,(C1>0)*D1,(E1>0)*F1)
ではどうでしょうか?m(_ _)m

QC#で作成したdllをVBScriptで使うときのマーシャリングの問題

お世話になります。

現在ClassicASPでWebアプリケーションを開発しているのですが、
その時にC#で作成したdllを使用したいと思い、
COM登録をしてASP側ではServer.CreateObjectで使用しようとしています。
しかし、データの受け渡し部分でずっとつまづいています。

やりたいことは、C#側の関数の戻り値で独自のクラス(構造体)の配列を戻したいのです。
以下サンプルコードです。

ASP側
<%@ Language=VBScript%>
<%
Response.ContentType = "text/html"

Dim testObject
set testObject = Server.CreateObject("TestObject")
list = testObject.getList()

Response.Write(TypeName(list))
' ここで、[VBScript でサポートされていないオートメーションが変数で使用されています]エラー
%>



C#側

[StructLayout(LayoutKind.Sequential)]
public struct TestData
{
[MarshalAs(UnmanagedType.BStr, SizeConst = 1024)]
public String title;
}

public interface ITestObject
{
TestData[] getList();
}

public class TestObject : ITestObject
{
public TestData[] getList()
{
TestData[2] result;
result[0].title = "1";
result[1].title = "2";
return result;
}
}



あとどういった処理が足りないのでしょうか?
やりたいことは、構造体配列をASP側に渡したいだけです。

本当に困っています、なにとぞ宜しくお願い致します。

お世話になります。

現在ClassicASPでWebアプリケーションを開発しているのですが、
その時にC#で作成したdllを使用したいと思い、
COM登録をしてASP側ではServer.CreateObjectで使用しようとしています。
しかし、データの受け渡し部分でずっとつまづいています。

やりたいことは、C#側の関数の戻り値で独自のクラス(構造体)の配列を戻したいのです。
以下サンプルコードです。

ASP側
<%@ Language=VBScript%>
<%
Response.ContentType = "text/html"

Dim testObject
set testObject = Ser...続きを読む

Aベストアンサー

VBScriptでは変数に型がありません。当然、構造体もありません。
Variant型で、形式が配列であるデータを返すようにしないと成功
しません。
また、要素が構造体なので、これ自体を別途、クラスとして登録
するか、文字列の配列として扱うようにする必要があります。
「VB用と同じ」と考えて設計したのであれば、全体の設計を見直す
ことを薦めます。

Q抽出結果で、合計と最新日付を得るには?

----A-----B-----C---
1 07/01 商品A 1,000
2 07/02 商品A 2,000
3 07/02 商品B 3,000
4 07/03 商品A 4,000
---------------------
のように、日付・品名・金額の列があり、
「商品A」の合計金額と、その合計した明細の最新日付を
出したいのですが、どうすればいいのでしょうか?

Aベストアンサー

合計は、
=SUMIF(B1:B4,"商品A",C1:C4)

最新日付は、
=MAX(IF(B1:B4="商品A",A1:A4))
と入力してから、CtrlキーとShiftキーを押しながらEnter

QDataTableに入っているデータを全てinsertしたい!(C#)

はじめまして、okwebsamaです。
さっそく質問なのですが、
質問タイトルのままですが、DataTableに入っているデータを全てinsertしたいのです。
insert先のテーブルは、DataTableと同じ列名をもっています。

コード
DataTable d;
for(int i = 1; i <= d.Rows.Count; i++){
みたいな感じで作っていたんですが、ここから先が思いつきませんでした。
どなたかよろしくお願いします!!

Aベストアンサー

確認ですが、

・使っているデータベースは何ですか?
 (SQL Server or Oracle or Access or その他?)

・DBの接続方法には、何を使ってますか?
 (SqlClient? OleDb?)

・コピー元のDataSetは、型付DataSet?型無しDataSet?

・C# + ASP.NET でという話で宜しいでしょうか?
 (ASP.NETで質問されていますが、質問内容みると、C#という
 分類での質問になり、ASP.NETではないような気がします)

少々情報が足りないので、回答が的外れになるかもしれませんが、
どのDB&接続方法にしても、名前空間とクラス名が違うだけで
基本ロジック自体は、ほぼ一緒のため、
下記、型付きDataSetで、SQL Serverの例で、サンプル記載しておきます。

もし、SQL Serverじゃない&型無しDataSetの場合だったり、
どう応用したらいいかわからないという場合は、また質問して下さい。

#############################################################

// コピー元のDataTableを取得
DataTable d = コピー元DataTableを取得;

// データベースの接続
//(本来であれば、web.configやapp.configに設定されている接続先を取得する方法が望ましいわけで...)
System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection("Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=DB名;Data Source=DBサーバのIPアドレス");

conn.Open();

// コピー元のデータ数分だけループ
foreach (DataRow row in d.Rows)
{
  // INSERT用SQLを生成
  System.Text.StringBuilder sql = new System.Text.StringBuilder();

  sql.Append("INSERT INTO [コピー先のスキーマ].[コピー先テーブル名] ");

  // INSERT項目
  System.Text.StringBuilder insertColumns = new System.Text.StringBuilder();

  // INSERT値
  System.Text.StringBuilder valueColumns = new System.Text.StringBuilder();

  // DataTableの列数分だけループ
  foreach (DataColumn col in d.Columns)
  {
    insertColumns.AppendFormat("{0},", col.ColumnName);

    // 列の型が文字列型の場合
    if (col.DataType == typeof(String))
    {
      valueColumns.AppendFormat("'{0}',", row[col.ColumnName].ToString());
    }
    else
    {
      // 列の型が文字列型以外の場合
      valueColumns.AppendFormat("{0},", row[col.ColumnName].ToString());
    }
  }

  // 不要な「,」を削除
  insertColumns.Remove(insertColumns.Length - 1, 1);
  valueColumns.Remove(valueColumns.Length - 1, 1);

  // INSERT用SQL文の生成
  sql.AppendFormat("({0}) VALUES ({1})", insertColumns.ToString(), valueColumns.ToString());

  // SQLの実行
  System.Data.OleDb.OleDbCommand command;
  command = new System.Data.OleDb.OleDbCommand(sql.ToString(), conn);
  command.ExecuteNonQuery();

  command.Dispose();
  command = null;
}

// DBの接続を閉じる
conn.Close();
conn.Dispose();
conn = null;

確認ですが、

・使っているデータベースは何ですか?
 (SQL Server or Oracle or Access or その他?)

・DBの接続方法には、何を使ってますか?
 (SqlClient? OleDb?)

・コピー元のDataSetは、型付DataSet?型無しDataSet?

・C# + ASP.NET でという話で宜しいでしょうか?
 (ASP.NETで質問されていますが、質問内容みると、C#という
 分類での質問になり、ASP.NETではないような気がします)

少々情報が足りないので、回答が的外れになるかもしれませんが、
どのDB&接続方法にし...続きを読む

Q日付をキーにその日付から前と後をそれぞれ金額を合計する方法が知りたいで

日付をキーにその日付から前と後をそれぞれ金額を合計する方法が知りたいです。
SUMIFかSUMPRODUCTあたりの関数を使えばいいかなと思うのですが、いい方法が思いつきません。
よろしくお願いいたします。

Aベストアンサー

ちょっと、完璧にイメージできてないですが画像の上部にある日付の右にその日付未満(以下)と以上(それより新しい日付)の合計でいいんでしょうか?

日付をシリアル値と思えばSUMIFで条件式に不等式を入れれば可能です。

A1に軸となる日付が入ると仮定して

軸となる日付以前の日付
=SUMIF(日付データのある範囲,"<="&a1,金額のある範囲)

軸となる日付以降の日付
=SUMIF(日付データのある範囲,">"&a1,金額のある範囲)

どちらに軸となる日付を入れるかは不等号の=をどちらに入れるかです。

SUMPRODUCTでも出来ると思うけど、重くなりそうなので省略します。
きっと、別の方が答えてくれるでしょう。

QC#のargs[0].Successの記述

if (System.Text.RegularExpressions.
Regex.Match(line, args[0].Success))

の記述で,

エラー1'string' に 'Success' の定義が含まれておらず、型 'string' の最初の引数を受け付ける拡張メソッドが見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。

といったコンパイルエラーが出るようなのですが、usingディレクティブで追加しないといけない記述とかあるのでしょうか?

よろしくお願い致します。

Aベストアンサー

すみません。何がしたいのですか?

args が main(string[] args)等として受けとったものなら、メッセージにある通りでSuccessなんてものはありません。
using使っても、無いものは無いです。

System.Text.RegularExpressions.Regex.Match メソッドは、 System.Text.RegularExpressions.Match オブジェクトを返します。そのままifで判定するのはおかしいのでは?

もしかして、 line を args[0] のパターンでマッチさせた結果の成否をifで判定しようとしてませんか?
それならば
System.Text.RegularExpressions.Regex.Match(line, args[0])
で、マッチングをして、その結果のMatchオブジェクトに対して Successプロパティで判定、となるのでは?

System.Text.RegularExpressions.Match mt = System.Text.RegularExpressions.Regex.Match(line, args[0]) ;
if( mt.Success) ~
まとめるなら
System.Text.RegularExpressions.Regex.Match(line, args[0]).Success

参考URL:http://msdn.microsoft.com/ja-jp/library/system.text.regularexpressions.group.success%28v=vs.80%29.aspx

すみません。何がしたいのですか?

args が main(string[] args)等として受けとったものなら、メッセージにある通りでSuccessなんてものはありません。
using使っても、無いものは無いです。

System.Text.RegularExpressions.Regex.Match メソッドは、 System.Text.RegularExpressions.Match オブジェクトを返します。そのままifで判定するのはおかしいのでは?

もしかして、 line を args[0] のパターンでマッチさせた結果の成否をifで判定しようとしてませんか?
それならば
System.Text.RegularExpressions.Re...続きを読む

Qエクセル 最新日付以外のデータを合計する

下表があるとしまして、
氏名日付買上金額
鈴木5月5日10
鈴木5月6日60
鈴木5月7日100
鈴木5月9日400
田中5月4日100
田中5月7日200
山田5月1日600
山田5月2日200
山田5月3日300
1970
氏名毎に、最新日付以外の合計を計算したいのです。
この場合、鈴木さんが170 田中さんが100 山田さんが800の合計1070がそれぞれの氏名の最新以外データの合計となりますが、これらを自動的に計算できないでしょうか?
よろしくおねがいします。

Aベストアンサー

こんにちは。

以下の方法でできます。
大きく分けて2ステップです。
データはあらかじめ日付順でソートされているものとします。


1)作業列を作る

最新データの場合のみ買上金額にかかわらず0を返し、
それ以外の場合は買上金額そのままを返す式を、
別な列に入力します。

たとえば例で言えばA~C列に氏名、日付、買上金額ですので、
D列を作業列としましょう。
D1セルに「買上金額2」などと見出しをつけてください。

D2セルに次の式を入力します。
 =IF(A2=A3,C2,0)
そしてこの式をすべての行にコピーします。
すると、最新データの行のみ、0となり、
それ以外の行は、買上金額が表示されます。


2)集計機能で名寄せして集計する

下準備ができたらいよいよ集計です。
リスト内にカーソルを置いた状態で、

 データ-集計

で、集計の設定画面が開きます。
ここで、
 「グループの基準」 を 「氏名」
 「集計の方法」 を 「合計」
を指定します。

そして、
 「集計するフィールド」では、
 「買上金額2」のフィールドにのみ、
チェックがつくようにします。

そして、OKを押せば自動的に集計されます。

こんにちは。

以下の方法でできます。
大きく分けて2ステップです。
データはあらかじめ日付順でソートされているものとします。


1)作業列を作る

最新データの場合のみ買上金額にかかわらず0を返し、
それ以外の場合は買上金額そのままを返す式を、
別な列に入力します。

たとえば例で言えばA~C列に氏名、日付、買上金額ですので、
D列を作業列としましょう。
D1セルに「買上金額2」などと見出しをつけてください。

D2セルに次の式を入力します。
 =IF(A2=A3,C2,0)
そしてこの式を...続きを読む

QSQLがどの処理かをC#側で判断することは可能?

C# & SQLServerでプログラムを書いていますが、

*****************************************
System.Data.SqlClient.SqlException: タイムアウトに達しました。操作が完了する前にタイムアウト期間が過ぎたか、またはサーバーが応答していません。
*****************************************

というエラーが発生します。

恐らく他の処理がアクセス中だと思うのですが、
そのアクセスがどの処理かをC#側で判断することはできるのでしょうか?

Aベストアンサー

エラー内容は必ずしも、一致している訳ではありません。

特に上記のようなエラー内容は、場合によってSQL文もしくは接続する文に間違いがあることで出るケースもあります。
※参考URLのように「System.Data.SqlClient.SqlException」で調べて見てみると分かるかと思います。

Exceptionを見るか、ブレークポイントを置いてどこで落ちているか見るのが、一番早いかと思われます。
また、質問する際にはロジックを載せて下さるとこちらとしても分かりやすいです。

参考URL:http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=601758&SiteID=7


人気Q&Aランキング

おすすめ情報