oracle10gへのアクセスでプログラミング方法

このQ&Aのポイント
  • oracle10gへのアクセス方法とプログラミングについて説明します。
  • データ型が"date"であるOracle DB上で、指定期間のデータを取得するためのSQLについて説明します。
  • 日付のパターン試行に関して問題が発生している場合、どのように対処すればよいかについての質問です。
回答を見る
  • ベストアンサー

oracle10g へ、アクセスでつないで モジュール上でプログラミン

oracle10g へ、アクセスでつないで モジュール上でプログラミングをしています。 オラクルDB上のデータ型は"date"なのですが、(例:2007/03/09 12:23:42)、 アクセスのモジュール上に組んだSQLで、 stSQL = "select ID " _ & "from xx.DBNAME " _ & "where KOUSIN_DATE between " & ototoi & " and " & honzitu & "" のように記載しています。 そして、ototoiに入れるデータは ototoi = DateAdd("d", -2, Now) のパターンと ototoi = Format(DateAdd("d", -2, Now), "yyyymmdd") のパターンの2通りでためしてみたのですが、 どちらもうまくいきませんでした。 どうしたらSQLがうまくデータを拾ってこれるでしょうか?? 漠然とした質問で申し訳ありませんが、宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

"~ between #" & ototoi & "# and #" & honzitu & "#" みたいにしてみてはどうでしょうか。

makikorin
質問者

お礼

うーん・・ うまくいきませんでした・・。 他に方法はないでしょうか・・??

関連するQ&A

  • Access Update文の副問い合わせ

    以下のAのSQLをAccessから実行すると「実行時エラー3073 更新可能なクエリであることが必要です。」エラーが表示されます。 一時、待避としてBのような処理をしていますが、かなり処理速度がかかります。 何とかAのような1文で処理できないでしょうか? 'A================================================ Update PV_PRINT pv Set 勉強日 = (SELECT max(日付) as 日 FROM 基本記録テーブル where 項目2 between 3011 and 3014 and pv.USER_NUM = 基本記録テーブル.ID GROUP BY ID); 'B================================================ stSQL = "SELECT max(日付) as 日, ID FROM 基本記録テーブル where 項目2 between 3011 and 3014 GROUP BY ID;" Set TBL1 = CurrentDb.OpenRecordset(stSQL) Do Until TBL1.EOF stSQL = "UPDATE PV_PRINT " stSQL = stSQL & " SET PV_PRINT.勉強会日 = " & Format(TBL1![日], "yyyymmdd") stSQL = stSQL & " WHERE PV_PRINT.USER_NUM = " & TBL1![ID] & ";" CurrentDb.Execute stSQL TBL1.MoveNext Loop Set TBL1 = Nothing

  • 壊れたAccessモジュールの修正

    最近入手した(1週間くらい前)モジュール(自動的にDataをセーブさせることができる)をAccessのFormに入れた後、2-3日は稼動していましたが、Windowに何らかの問題が生じた結果、そのプログラムがFormに重大な影響を及ぼし、その結果Form自体を開くことができないなど、大変な事になってしまい今非常に困っています。(セーブしたはずのAccess MDB自体も影響があり、開けない。)できる事ならこの入手したモジュール自体を完全に削除して元に戻したいのですが、単純にFormのコマンドボタンに貼り付けたそのモジュールプログラムを削除しただけでは、元に戻りません。データ自体は保持されていると思いますが、他の関連すると思われるフォームも開けず、(フォーム内にはコマンドボタンがかなり多く含まれている)途方にくれているところです。モジュールの事を全くわからない自分が単純に他人の作成したモジュールプログラムを使ってしまった事を後悔しています。是非どなたかモジュールのわかる方でその適切な削除、その他今回のような対処方法を教えて頂けると喜びます。ご参考までにこのモジュールは下記の如く書かれています。 Option Compare Database Sub BakUp() Dim FSO As Object, BakName As String Dim MyFullName As String, MyPath As String, MyName As String Set FSO = CreateObject("Scripting.FileSystemObject") MyFullName = CodeProject.FullName MyName = CodeProject.Name MyPath = CodeProject.Path BakName = MyPath & "\" & Format(Now(), "yyyymmdd") & MyName FSO.CopyFile MyFullName, BakName, True Set FSO = Nothing End Sub

  • Oracle10gからkeySQLで集計データ

    Oracle10gでデータ管理していますが、インターフェースを外注した為、自由なデータ加工ができません。この為、keySQLを用いて、データをExcelとして取出し、Access2003にインポートして解析する方法で対応しています。 しかし、Excelで一度に取り出せるレコード数が65500程度に限られ、効率的にデータ取出しが出来ません。そこで、keySQLで、集計してレコード数を減らして取り出したいと思います。 しかし、Accessのクエリーデザイン画面のような集計ボタンが見当たりません。GUI的には集計できないという事でしょうか?クロス集計はできるようなのですが、Accessのような集計は、SQL文を直接記述する方法しかないのでしょうか? keySQLにお詳しい方がおられましたら、データ集計の仕方をご教示下さい。 当方、残念ながら、まだSQL文を直接記述できるレベルにはありません。

  • Access2000データのカウントについて

    フォーム上の詳細のところに表示されるクエリのデータの数を、フォームフッターに配置したテキストボックスのコントロールソースに以下の二つのパターンを記入してカウントしようと試みましたが、うまくいきません。以下の例は、今日から30日前までにおけるトレーニング日数をカウントしようとしたつもりです。 どこがまづいのでしょうか?よろしくお願いします。 =DCount("[トレーニング日]",トレーニング・ダイアリー, "Between Date() And (Date()-30)") ないし =DCount("[トレーニング日]",トレーニング・ダイアリー, " > DateAdd( “d”,-30,Date())”) ちなみに =Count([トレーニング日]) については、うまくいきます。

  • Accessへ日付をINSERT

    今Access2000のテーブルから文字として受け取ったデータを 同じくAccessの別テーブルの日付型にINSERTしようとしています。 ソフトはVC6.0を使用しています。 受け取るSELECTはうまくできています。 UCHAR sqlstr [ ] ="INSERT INTO テーブル名"           "(カラム1、カラム2、カラム3)"           "VALUES(?,?,?)"; INSERTはこのようにSQL文を用意しておいてSQLExecuteで SQL文を実行しようとしています。 この場合にカラム1が日付型だとしたら、 「?」のパラメータには文字として渡し、 SQL文のなかで "VALUES(to_date(?,'YYYYMMDD'),?,?)"; とすればうまくいくと思ったのですができません。 いろいろサイトを見るとAccessでは「’」ではなく「#」を使うと 書いてあったので to_date(?,#YYYYMMDD#) とやったのですがエラーになってしまいます。 ちなみにパラメータとして渡す文字列は「20020413」という 8桁の普通の文字です。 どなたか知っている方いませんでしょうか? 他に方法があればそれでも構いません。 どうか教えてください。m(__)m どうしても先へ進めません…。

  • Access yyyymmddhhを取得する方法

    選択クエリで空のフィールドに、現在のシステム時刻から 今日の3時間後の日時データを取得したいです。 表題の通り、必要な日時データはyyyymmddhhの為、 以下の2つの方法を試したのですがhhが取り出せずにいます。 空のフィールド:DateAdd("h", 3, Now) →この場合、yyyy/mm/dd hh:nn:ss と表示されてしまいます。  分と秒、スラッシュやコロンは必要ないです。 空のフィールド:Format(Date(),"yyyymmdd") →この場合、yyyymmdd と表示され、当たり前ですが3時間後のhhが入りません。 勉強不足でお恥ずかしいのですが、どのように書いたら良いのか教えてください。 宜しくお願い致します。

  • VB2010でのSQL日付フォーマット表記変更

    VB2010Expressを使用しています。 VBにてあるCSVファイルの内容をmdbファイルに移行するプログラムを作成しています DateTimePickerの日付を条件にしているんですがCSVの日付表記が『yyyymmdd』になっていて下記のコードでは『 (Me.Date日付.Text).ToString("yyyyMMdd")』の部分で『'String' から 'System.IFormatProvider' への変換時にランタイム エラーが発生する可能性があります。』とエラーが出ます。 自宅PCでは『(Me.Date日付.Text).ToString("yyyyMMdd")』を『DateAdd("d", 0, Me.Date健診日.Text).ToString("yyyyMMdd")』にしたらエラーなく動いたのですが、今日職場のPCで検証したら『型が合いません的なエラーが出てしまいます。(日付部分でのエラーみたいなのですが職場でのエラーをメモし忘れました、スイマセン) 日付のフォーマット変更そしてPCの違いによるエラーの発生原因についてご教授お願いします。 Try Dim DT As New DataTable '===============CSVからクエリ=============== Using OleCn As New System.Data.OleDb.OleDbConnection OleCn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & FolderPath & _ ";Extended Properties=""Text;HDR=YES;IMEX=1;FMT=Delimited""" Dim SQL As String = "" SQL = "SELECT * FROM " + CSVFileName + " WHERE 日付 BETWEEN " + DateAdd("d", -1, Me.Date日付.Text).ToString("yyyyMMdd") + " AND " + (Me.Date日付.Text).ToString("yyyyMMdd") Using DA As System.Data.OleDb.OleDbDataAdapter = _ New System.Data.OleDb.OleDbDataAdapter(SQL, OleCn) DT.Clear() DA.Fill(DT) End Using End Using '===============CSV-importへの登録=============== コード省略 Catch ex As Exception MessageBox.Show(ex.ToString, "例外発生") Exit Sub End Try

  • ACCESS97 のモジュールの中 何番目かの データを取得したい

    ACCESS97 のモジュールの中で SQLを使用しています。 SQLを使用して あるテーブルの任意のレコードを選択したいのです。 例えば テーブルAが下記のようにあるとします。 項目 名前 番号 A 001 B 003 D 004 という場合に名前Bの番号003を取得したいのです。 データとしては、"2"番目の2 は取得可能です。  (フォーム上のテキストBOXで入力) Set DATABASE = CurrentDb() strSQL = "SELECT * FROM テーブルA WHERE " strSQL = strSQL + "**** = '" & **** & "' ;"     ↑ここに条件をどのように持てばいいのでしょうか? ※ ここで、名前の項目ではキーとなる項目は得られません。   今回は 何番目のデータを取得したい ということが可能かどうか    教えて頂きたいと思います。

  • access での BETWEEN

    access2000 のテーブルから、SQL BETWEEN の処理が、うまく行きません・・。 環境 win2k VM 1.4.1_03-b02 テーブルは、  id    具具  1    3  2    9  3    12  4    5  5    8 なカンジです。 コードは、 String betWeen = "SELECT 具具 FROM goo WHERE 具具 BETWEEN 6 AND 13"; ResultSet rs = stm.executeQuery( betWeen ); エラー内容は、 java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] 抽出条件でデータ型が一致しません。 です。 SQLは、あってると思うのですが、何か方言的なことなのでしょうか・・? 回答、宜しくお願います・・。

    • ベストアンサー
    • Java
  • to_date使用時に発生するエラーの対処方法について

    Oracle8iにおいて、日付1(date1)カラムは2007年6月5日12時25分20秒というようにvarchar2(14)で定義されており、時分秒でデータを持っています。 それを年月単位で件数をカウントしたいため、 to_dateで変換をかけているのですが(以下のSQL参照)、ORA-1830の エラーが発生してしまいます。 以下のSQLをどのように修正すれば正しく結果が得られるのでしょうか?ご教示下さい。 select to_date(date1,'YYYYMMDD'),count(*) from tableA where date1 >= '20070501000000' group by to_date(date1,'YYYYMMDD') ちなみに、to_dateのところを、to_charにしてみると、ORA-1481が発生してしまいます。

専門家に質問してみよう