教えてください。
Dim n1 as string
で、n1にはデータベースから読み込んだ日付
(例:20080505 数値型) をセットしました。

その後SQLでセレクト(と、テーブル作成)を投げたいのですが、
SQL = "select * into A from B where date>'" & n1 & "'"
では ダメなようです。
中身のデータがテキスト型のときはうまくいったのですが・・・
どうしたらいいのでしょうか?
教えて下さい。

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

A 回答 (1件)

アクセスが手元にないので検証はできませんが、



 
>SQL = "select * into A from B where date>'" & n1 & "'"

数値変数の場合は、’シングルクォテーションが不要なのでは?

SQL = "select * into A from B where date > " & n1 & ""
とか
SQL = "select * into A from B where date > " & n1
など
 
    • good
    • 0
この回答へのお礼

ありがとうございました。
シングルコーテーションを抜かせばうまくいきました!

お礼日時:2009/05/18 12:12

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

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

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

Q密度関数値f(y)から分布関数値F(y)を求めたい

密度関数値f(y)から分布関数値F(y)を求めたいのですが、わかりません。


f(y)=0.0104
になりました。

これから、
F(y)を求めたいのですが、ネットで調べてもどうも分かりません。

もしかして、f(y)=0.0104がおかしいのでしょうか?


どなたか教えてください><

Aベストアンサー

>f(y)=0.0104がおかしいのでしょうか?
その通りです。
密度関数の性質
∫(-∞→∞) f(y)dy=1
を満たさなくてはいけません。

f(y)=0.0104 だと
∫(-∞→∞) f(y)dy=∞
となって密度関数の性質を満たしませんね。

なお、分布関数F(y)と密度関数f(y)の間には
F(y)=∫(-∞→y)f(t)dt, F(∞)=1
という関係にあります。

Qstringのデータ型はメモ型とテキスト型どちらがいいのでしょうか?

こんばんは。
アクセスで
100文字のデータを入力したい場合、
フィールドのデータ型は
テキスト型にしてフィールドサイズを100にするのと、
メモ型にするのとどちらがいいのでしょうか?

Aベストアンサー

私も、No.1の方と同じく「テキスト型でフィールドサイズ指定」を
推奨します。

ただ、元々は(といっても私が知ってるのはAccess97以降ですが)、
・テキスト型:
  文字数の上限が小さいが、インデックスを設定可能
・メモ型:
  文字数の上限が大きいが、インデックスは設定不可
ということで、

a)サイズの上限に引っかかる場合はメモ型
b)完全一致検索(+先頭一致検索も?)や並べ替えを行う必要がある
 (かつ、サイズが255文字以内)ならテキスト型、

という使い分けだったと思うのですが(以前の回答もその前提)、
http://oshiete1.goo.ne.jp/qa3188809.html

改めて調べてみたところ、Access2002以降ではメモ型の場合にも
インデックスが作成可能になっていました(汗)
http://support.microsoft.com/kb/302525/ja
(『詳細』の項目のところに、「この現象は、Microsoft Access 2000
 より前のバージョンの Microsoft Access では発生しません。
 これは、Jet 3.5 以前ではメモ型フィールドにインデックスを付ける
 ことができないためです。」とあります:
 でもAccess2003のヘルプ(テーブルのデザインビューで『データ型』
 のところにフォーカスを移動してF1キーを押す)には、以前のまま
 「メモ型、ハイパーリンク型、および OLE オブジェクト型のフィールド
 には、インデックスを設定できません。」と書かれているのですが(汗))


・・・ということなので、「文字数を制限したいかどうか」で決めればいい、
ということではないかと思います。
(従って、「100文字まで」と上限を設定したい今回の場合はテキスト型、と)

私も、No.1の方と同じく「テキスト型でフィールドサイズ指定」を
推奨します。

ただ、元々は(といっても私が知ってるのはAccess97以降ですが)、
・テキスト型:
  文字数の上限が小さいが、インデックスを設定可能
・メモ型:
  文字数の上限が大きいが、インデックスは設定不可
ということで、

a)サイズの上限に引っかかる場合はメモ型
b)完全一致検索(+先頭一致検索も?)や並べ替えを行う必要がある
 (かつ、サイズが255文字以内)ならテキスト型、

という使い分けだったと思うのですが(以...続きを読む

QEXCELでA列記載の数値に対応するB~F列のデータをG列に返すには?

A1からA10のセルに列順を示す1から5までの数値がランダムに入っています。
B1からF10までのセルにデータ(文字列または数値)が入っています。
B列を1列目、以下C~F列を2~5列目として、G列にA列の数値に対応する列のデータを返したいのですが、数式を忘れてしまい困っています。初歩的なな質問で恐縮ですが至急どなたかご教示ください。
例えば下表のとおりA1の数値が1のときはB1を、4の時はE1をというようにです。

列順(1)  (2) (3) (4) (5) 
A  B   C   D   E   F  G
1 山田 田中 斉藤 鈴木 佐藤 山田
4 池田 木戸 松尾 山口 近藤 山口
5  …  …  …  …  …
2  …  …  …  …  …

Aベストアンサー

H1:=INDEX(B1:G1,,A1)
以下コピーということでしょうか

QAccessVBA SQLのWHERE句について

こんにちは!
テーブルAのBフィールドの中に以下のデータがあるとき(昇順です)
1,2,5,6,12....
3という数値を得たいです。
3,4がフィールドに含まれる場合は、7です。
数字がバラバラなので、データを新規追加した時に穴埋めをしていきたいのです。
データの登録した順番は関係ないものとして、どのように実現できますでしょうか?
ORDERでデータを取ってきて、ループするしかないのでしょうか・・・?
特殊な例ですみませんが、宜しくお願い致します。

Aベストアンサー

tab1:

ID
1
2
4

クエリ1:

SELECT tab1.ID, DBLookup("ID","Tab1","ID>" & [ID],0) AS NextID
FROM tab1;

[イミディエイト]
? DBLookup("ID+1", "クエリ1", "(NextID-ID)>1")
3

簡単なのは[クエリ1]で、現行の値を次の値を発生させること。
で、その差が1以上の時の値+1が空番号。

Public Function DBLookup(ByVal strField As String, _
             ByVal strTable As String, _
             Optional ByVal strWhere As String = "", _
             Optional ByVal ReturnValue = "") As Variant
On Error GoTo Err_DBLookup
  Dim DataValue
  Dim strQuerySQL As String
  Dim rst     As ADODB.Recordset

  Set rst = New ADODB.Recordset
  strQuerySQL = "SELECT " & strField & " FROM " & strTable
  If Len(strWhere) > 0 Then
    strQuerySQL = strQuerySQL & " WHERE " & strWhere
  End If
  With rst
    .Open strQuerySQL, _
       CurrentProject.Connection, _
       adOpenStatic, _
       adLockReadOnly
    If Not .BOF Then
      .MoveFirst
      DataValue = .Fields(0)
    End If
  End With
Exit_DBLookup:
On Error Resume Next
  rst.Close
  Set rst = Nothing
  DBLookup = IIf(Len(DataValue & ""), DataValue, ReturnValue)
  Exit Function
Err_DBLookup:
  MsgBox "SELECT 文の実行時にエラーが発生しました。(DBLookup)" & Chr$(13) & Chr$(13) & _
      "・Err.Description=" & Err.Description & Chr$(13) & _
      "・SQL Text=" & strQuerySQL, _
      vbExclamation, " 関数エラーメッセージ"
  Resume Exit_DBLookup
End Function

tab1:

ID
1
2
4

クエリ1:

SELECT tab1.ID, DBLookup("ID","Tab1","ID>" & [ID],0) AS NextID
FROM tab1;

[イミディエイト]
? DBLookup("ID+1", "クエリ1", "(NextID-ID)>1")
3

簡単なのは[クエリ1]で、現行の値を次の値を発生させること。
で、その差が1以上の時の値+1が空番号。

Public Function DBLookup(ByVal strField As String, _
             ByVal strTable As String, _
             Optional ByVal strWhere As String = "", _
     ...続きを読む

Qf(x)=0の近次解を求める数値計算について 

方程式 f(x)=0 
の近次解を求める数値計算に関する質問です。

代表的な計算方法には二分法、はさみうち法、ニュートン法、逐次代入法
などがあるようですが、

f(x)が以下のような関数であるときどのように近似解を求めたらよいでしょうか?

(1)  f(x)はどのxに対しても常にf(x)≧0となるような関数
(2)  f(x)=0 となるxはただ一つだけである
(2)  f(x)は非常に複雑な関数でf(x)を微分するのは困難

趣味で行っている3Dのモデリングに関するプログラム中に必要になった関数で、
このような関数に対し、二分法をベースにしたプログラムをつくってみましたが、
非常にだらだらとしたアルゴリズムでなっとくできません。
この関数に適したよいを御存知の方おられましたら御回答くださいませ。


またもしf(x)が 

(4)  f(x)= |2x+3| のように f(x)が0になるまでは単調減少で、0になってからは単調増加である

という条件がさらに加わった場合どうなるかについてもご解答いただけると助かります。

方程式 f(x)=0 
の近次解を求める数値計算に関する質問です。

代表的な計算方法には二分法、はさみうち法、ニュートン法、逐次代入法
などがあるようですが、

f(x)が以下のような関数であるときどのように近似解を求めたらよいでしょうか?

(1)  f(x)はどのxに対しても常にf(x)≧0となるような関数
(2)  f(x)=0 となるxはただ一つだけである
(2)  f(x)は非常に複雑な関数でf(x)を微分するのは困難

趣味で行っている3Dのモデリングに関するプログラム中に必要になった関数で、
このような...続きを読む

Aベストアンサー

>二分法をベースにしたプログラムをつくってみましたが、
>非常にだらだらとしたアルゴリズムでなっとくできません。
もし、それが極小値を求めるように二分法を改造したのであれば、
その方法で合っています。
少しでも計算時間を稼ぎたいなら、分割方法を工夫します。
「黄金分割法」を使います。
http://www.sra.co.jp/people/miyata/algorithm/goldsect.txt
※極小(大)値を求めるアルゴリズムで、f(x)が単峰性という以外には制約が無い。

ちなみに、
二分法、はさみうち法:X=A、X=Bで、F(X)の正負が入れ替わるように区間を
  設定する必要があるため、この方法は使えない。
ニュートン法:f(x)の微分が判らない場合、f'(x)=(f(x+dx)-f(x))/dx
  で無理やり計算できるから、ニュートン法が使えないわけではない。
  ただし、f(x)=0付近において、f'(x)もゼロに近いから、運が悪いと発散して解が求まらない場合があります。
逐次代入法:逐次代入法も、発散と隣り合わせです。
 ※ニュートン法も逐次代入法の一種。

>(4)  f(x)= |2x+3| のように f(x)が0になるまでは単調減少で、0になってからは単調増加である
(1)と(2)が成立すれば、必ず(4)が成立するのだけど....
この関数でやっかいな点は、微分が連続関数となっているかどうか。
微分が連続関数:極小値の位置で微分もゼロ。 したがって、f(x)をじかに求める場合、ニュートン法や逐次代入法では発散するかも。
ただし、微分のかわりに差分を使って、差分=0のxを求める方法はok。
微分が極小値の位置で不連続:差分=0となるxを求める方法がうまくいかない可能性がある。(2分法ならば無理やりですが解は求まる。)

それやこれやで、発散しないで解にたどり着ける可能性が高い方法は2つ。(計算速度を犠牲にします。)
1つはf(x)を直接使い、黄金分割法。
もう1つは、微分のかわりに差分を使い、2分法を用いて差分=0となるxを求める。
黄金分割法のほうが計算時間は短かそうです。

>二分法をベースにしたプログラムをつくってみましたが、
>非常にだらだらとしたアルゴリズムでなっとくできません。
もし、それが極小値を求めるように二分法を改造したのであれば、
その方法で合っています。
少しでも計算時間を稼ぎたいなら、分割方法を工夫します。
「黄金分割法」を使います。
http://www.sra.co.jp/people/miyata/algorithm/goldsect.txt
※極小(大)値を求めるアルゴリズムで、f(x)が単峰性という以外には制約が無い。

ちなみに、
二分法、はさみうち法:X=A、X=B...続きを読む

Q文字列の入っているString値、何も入力されていないString値、Null値の全てを表示されるには?

access2003です。
フォーム1とクエリ1とテーブル1があります。
クエリ1の「テーブル1の番号フィールド」の抽出条件に
「Like "*" & [Forms]![フォーム1]![番号テキスト] & "*"」と入力しています。

フォーム1の番号テキストに「1」を入力しコマンドホ゛タンを押すと
「1」を含むレコードを表示され

フォーム1の番号テキストに「*」を入力しコマンドホ゛タンを押すと
何かしらの文字列が入力されているレコート゛が表示されます。

しかし
テーブル1番号フィールドには、
Null値と何も入力されていないString値(""←が入っている)も含まれています。
(見た目は空白どちらも空白です)
(String値がある理由はADOを使って何も入力されてない値もまとめてレコードに追加している為)

ここで質問なのですが

フォーム1のコマンドホ゛タンを押したときに
文字列の入っているString値、何も入力されていないString値、Null値の全てを表示されるには
どうすればいいのでしょうか?

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

access2003です。
フォーム1とクエリ1とテーブル1があります。
クエリ1の「テーブル1の番号フィールド」の抽出条件に
「Like "*" & [Forms]![フォーム1]![番号テキスト] & "*"」と入力しています。

フォーム1の番号テキストに「1」を入力しコマンドホ゛タンを押すと
「1」を含むレコードを表示され

フォーム1の番号テキストに「*」を入力しコマンドホ゛タンを押すと
何かしらの文字列が入力されているレコート゛が表示されます。

しかし
テーブル1番号フィールドには、
Null値と何も入力...続きを読む

Aベストアンサー

> 何も入力されていないString値、Null値
は、
Len(Nz([フィールド名],"")) = 0 で得られます。

全てということであれば、
Len(Nz([フィールド名],"")) >= 0 になると思います。

Q関数 ~に最も近く~よりも高い数値

関数苦手です。宜しくお願いします。
セルA1からF5まで適当な数値が入っており、B1からF5までの中でセルA1に最も近く、A1よりも高い数値を選ばせたいです。同様なA1に最も近く、A1よりも低い数値を選ぶ式をお願いします。

Aベストアンサー

Excelの基本の1つでしょうか。
Office検定みたいなやつの Excelエキスパートでも出題されます。
配列数式を使うことで実現できます。


>セルA1に最も近く、A1よりも高い数値を選ばせたいです
 数式バーに以下数式を入力し
 =MIN(IF(B1:F5>A1,B1:F5))
 Shift+Ctrl+Enter で配列数式として入力されます


>A1に最も近く、A1よりも低い数値を選ぶ式
 =MAX(IF(B1:F5<A1,B1:F5))
 を同様に配列数式として入力すればOKです。


あまりデータ数が多い場合は再計算で重くなるので
対象のセルが数百万個を超える場合はマクロ化させた方が良いかもしれません。

QACCESSのSQLでのカンマ’認識について

教えてください。
アクセスSQLのwhere句の中で、’がもともとあるデータがあるのですが、
うまく実行できません。おそらく、終わりと認識されている?の加と思います。どうしたらいいのでしょうか?

update A set 'She's not busy' where C = 'She's busy';
このような場合です。
よろしくお願いします

Aベストアンサー

クエリのSQLビューでしたら、

 Update A Set B = "She's not busy" Where C = "She's busy;"

を試してみてください。
(文字列のくくりに「'」(シングルクォート)ではなく「"」(ダブルクォート)を使用)
※構文的に更新対象フィールドが必要なはずと思い、「B=」を追加しました。


VBA画面での文字列の場合(「Update~」を括るのに既に「"」使用済み)は、
SQL文全体を括る分の「"」も含めて書くと、

 "Update A Set B = " & Chr(34) & "She's not busy" & Chr(34) & " Where C = " & Chr(34) & "She's busy" & Chr(34) & ";"

でいけるかと思います。
(Chr関数は、引数で指定された文字コードの文字を返します:「Chr(34)」は「"」に相当)

Qアセンブラ言語の数字を数値に変換するプログラム

LD GR3,GR1 ;GR3にGR1の数字を入れる。
AND GR3,=#000F ;数字を数値に変換

というアセンブラのプログラムがあったのですが、なぜGR3と16進数#000Fの論理積をとることで数字を数値に変換できるのでしょうか。

それと、ここでいう数字、数値の違いとは、数字の1はコンピュータ上では
49という数値に変換される(アスキー文字)という認識でよろしいでしょうか。

Aベストアンサー

2進数で表したときの下4桁だけが残ることになるからです。

アスキーコードでは、数字の「1」は、10進で49、16進で31です。
16進の31を2進数に直すと、0011 0001です。
これと16進のOF、つまり2進の0000 1111と論理積をとると、0000 0001となり、数値の1になります。

Q実行時エラー'-2147467259(80004005)':

エクセルからADOでアクセスに繋ごうとしたときに
実行時エラー'-2147467259(80004005)':
マシン'マシン名'のユーザー'Admin'がデータベースを開けない状態、またはロックできない状態にしています。

というエラーが出てしまいます。

書いているコードは以下です。

Public cn As ADOdb.Connection
Set cn = New ADOdb.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb"



test.mdb自体はテーブルもクエリもフォームも何も開いていない状態です。
一度アクセスを終了させて再起動させればうまくできるのですが、何が原因でこのメッセージが出るのでしょうか?
もしわかれば教えてください。
よろしくお願いします。

Aベストアンサー

Accessで、test.mdbを開いた状態(テーブルも、クエリも、フォームも何も開かない状態)で、ExcelからADOで接続しようとすると、
「-2147467259"は既に使用されているので、使用できませんでした。」
というエラーが再現されました。(当方Office2000Pro)
そういうものなのでしょう。
何をなさりたいのですか?
AccessからExcelを起動して、データの移し替えをしたり、レポート代わりに印刷させたりという方法ではダメなのでしょうか?
何をしたいかという、切り口で質問をされてはいかがですか。


人気Q&Aランキング

おすすめ情報