Accessのクエリでたとえば下図のようなクエリがあるのですが、

------------------------------------------------------------
   製品番号   |  商品番号 |  品   名   |  品名カナ
------------------------------------------------------------
0123456789ABCD | 789ABCD   | ボールペン(黒)| ボールペン
123456789ABCDE | 89ABCDE   | 万年筆     | マンネンヒツ
    ・        ・       ・         ・
    ・        ・       ・         ・

このデータの「製品番号」の上位7桁だけ抽出したくてヘルプで関数をいろいろ調べてみたのですがよくわからず困っています.
前回違う質問をさせていただいたときに,更新クエリでRIGHT関数を使って下位7桁の抽出の仕方を教えていただいたのですが,その関数の逆版(LEFT関数??)のような感じの関数は存在しないのでしょうか?
ありましたらぜひ教えていただけないでしょうか.
どうぞよろしくお願い致します.

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

A 回答 (2件)

わかりにくい説明でしたね、ごめんなさい。


では、クエリを新規作成してみましょうか。

ご質問にあがっているテーブルのカラム名がわからないので以下のように仮定しますね。

商品テーブル:
・製品番号
・商品番号
・品名
・品名カナ

抽出条件に使用するカラム:製品番号をLeft関数で7文字分とってきます。
フィールドには以下のように入力することとなると思います。

Left([製品番号],7)

このフィールドの抽出条件に抽出したい文字列を入力してください。
"1234567"


SQLビューでみるとこんな感じになるのでは?

SELECT 商品テーブル.製品番号, 商品テーブル.商品番号, 商品テーブル.品名 ,商品テーブル.品名カナ
FROM 商品テーブル
WHERE ((Left(商品テーブル.製品番号,7) ="1234567"));

これで、必要とするデータが抽出されると思います。

補足ですが...
Left関数はの構文は以下のようになっていますので、文字列の部分にテーブルのカラム名と必要な文字数を記述してやります。

LEFT(文字列, 文字数)

ヘルプで"LEFT関数"を検索すると引っかかると思います。
    • good
    • 0
この回答へのお礼

takasgyさんありがとうございます!
丁寧な説明でとてもわかりやすく,すぐに試してみましたところ成功しました.
また,大変勉強になりました.
本当にありがとうございました! m(__)m

お礼日時:2001/06/12 12:01

Left関数ありますよ。



SQLならこんな感じ ==========================
SELECT t1.aa, t1.bb, t1.cc
FROM t1
WHERE ((Left(aa,5) ="12345"));
===========================================

また、Likeを使用することでも同様の機能が実現できます。

SQLならこんな感じ ==========================
SELECT t1.aa, t1.bb, t1.cc
FROM t1
WHERE (((t1.aa) Like '12345*'));
===========================================

クエリを作成してSQLビューで確認してみてください。

この回答への補足

早速のご回答ありがとうございます.
私の知識不足で申し訳ないのですが,SQLがよくわからないのでおかしなことを言ってましたらすみません.
・教えていただいたSQLを作成したクエリの下に追加してみたのですが,実行すると「SQLステートメントの後に文字が見つかりました.」と言う警告が出てその先に進めません,作成したクエリの中に埋め込んでみたりもしたのですが、やはり同じメッセージが出てしまいました.
入力するところが間違っているのでしょうか?
申し訳ありませんが、アドバイスお願い致します.

補足日時:2001/06/12 10:15
    • good
    • 0

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

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

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

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

QMinecraft MOD導入について。

MinecraftのMODを7-zipでMinecraft.jarに入れて、Minecraft.jarの方のMETA-INFを消去しました。
これでできるだろうと、Minecraftを開いてみたら、ログインは、できたのですが、このあとデータの取得中?の時にフリーズしたり、取得したあとにブラックに画面がなってしまいます。

ここで質問なんですが、
Minecraft.jarのMETA-INFを消去するだけでなく、Minecraft本体のMETA-INFも消去しなくてはいけないのでしょうか。一回それも行ったのですが、エラーで「実装されていません」とでてきてしまいます。binフォルダも何回も消去してやり直しましたがMinecraft本体のMETA-INFを消去していないと必ずブラックの画面が出てくるんです。

僕のMinecraftが変なのでしょうか?

Minecraft本体のMETA-INFを消去しなければならないのでしょうか?
そうであるなら、本体のMETA-INFの消去方法を教えてください。

回答を待っています。
なるべく早くお願いします。

Aベストアンサー

バージョンはあっていますか?minecraft.jarにMODを入れる際は、そのMODがマインクラフトのバージョンに対応しているかを確認する必要があります。
あるいは、ほかにminecraft.jarにMODを導入しませんでしたか?その場合、後から導入したのと前に導入したのが競合しているかもしれません。
もしくは、それはminecraft,jarに直接入れるタイプではなく、MODLoaderやMinecraftForgeを使って生成される「mods」フォルダに入れるタイプではないですか?
おそらく3つのいずれかかと思います。また、minecraft本体のMETA-INFは削除する必要はありません。

QAccess 会員番号4桁にする方法

会員データをAccessで管理しております。
CSVファイルで送られてくるデータをAccessにインポートして
運用しております。
そこで、会員データは4桁の数字(0001・0002・・・)で
管理しているのですが、送られてくるCSVファイルは
頭の000がない状態で送られてきます。
この000を一括で付けるにはどのようにすればいいでしょうか。

会員データは0001から9999までランダムに1000件から2000件程度
送られてきます。

よろしくお願いします。

Aベストアンサー

<Test>

ID___会員番号
1____1
2____2
3____3
4____4

<Test>

ID___会員番号
1____0001
2____0002
3____0003
4____0004

と、インポート後に一括変換する方法を2つ示します。

************************************************************************
回答1、更新クエリの利用。
************************************************************************

<クエリ1>

_______フィールド:会員番号
________テーブル:Test
レコードの更新:Format(会員番号, "0000")
_______抽出条件:
___________または:

[SQLビュー]

UPDATE Test SET 会員番号 = Format(会員番号,"0000");

*********************************************************************************************
回答2、SQL文実行関数の利用。
*********************************************************************************************

[イミディエイト]
? CnnExecute("UPDATE Test SET 会員番号 = Format(会員番号,'0000') WHERE LEN(会員番号 & '')<>4;")
True

もちろん、標準モジュールに、次のような自作関数を追加する必要があります。
多分、CnnExecute関数を使えば、一連の処理を自動化できるでしょう。
インポートもコードで実行していればですが・・・。

Public Sub ErrMessage(ByVal CnnErrors As ADODB.Error, ByVal strSQL As String)
   MsgBox "ADOエラーが発生しましたので処理をキャンセルします。" & Chr$(13) & Chr$(13) & _
      "・Err.Description=" & CnnErrors.Description & Chr$(13) & _
      "・Err.Number=" & CnnErrors.Number & Chr$(13) & _
      "・SQL State=" & CnnErrors.SQLState & Chr$(13) & _
      "・SQL Text=" & strSQL, _
      vbExclamation, " ADO関数エラーメッセージ"
End Sub

Public Function CnnExecute(ByVal strSQL As String) As Boolean
On Error GoTo Err_CnnExecute
   Dim isOK As Boolean
   Dim cnn As ADODB.Connection
  
   isOK = True
   Set cnn = CurrentProject.Connection
   With cnn
     .Errors.Clear
     .BeginTrans
     .Execute strSQL
     .CommitTrans
   End With
Exit_CnnExecute:
On Error Resume Next
   cnn.Close
   Set cnn = Nothing
   CnnExecute = isOK
   Exit Function
Err_CnnExecute:
   isOK = False
   If cnn.Errors.Count > 0 Then
     ErrMessage cnn.Errors(0), strSQL
     cnn.RollbackTrans
   Else
     MsgBox "プログラムエラーが発生しました。システム管理者に報告して下さい。(CnnExecute)", _
        vbExclamation, " 関数エラーメッセージ"
   End If
   Resume Exit_CnnExecute
End Function

<Test>

ID___会員番号
1____1
2____2
3____3
4____4

<Test>

ID___会員番号
1____0001
2____0002
3____0003
4____0004

と、インポート後に一括変換する方法を2つ示します。

************************************************************************
回答1、更新クエリの利用。
************************************************************************

<クエリ1>

_______フィールド:会員番号
________テーブル:Test
レコードの更新:Format(会員番号, "0000")
_______抽...続きを読む

QMinecraftのMOD導入の質問です

Minecraftをプレイしていて
・Industrial Craft²
・BuildCraft
の2つのmodを導入したいと思っています

その前提となる
・ModLoader
・ModLoaderMP
・MineCraftForge
の3つのmodの導入で躓いています

ModLoader
ModLoaderMP
の2つは導入してもMinecraft.exeは起動されるのですが
MineCraftForgeを導入すると起動はされるのですが画面が黒いまま止まってしまいます。

MineCraftForgeのバージョンが違うと思って探しているのですがなかなか見当たりません
どなたか解決策を教えていただけないでしょうか?

Minecraftのバージョンは1.2.3を使用しています
面倒なことだとは思いますが1つ1つ順番に教えていただけると助かります。

Aベストアンサー

>>どこから入手するのかがわかりませんでした
ですから、公式サイトに行ってください。
http://www.mod-buildcraft.com/forums/topic/forge-downloads/

"You can visit the Jenkins Build System for information and a download link for ever build."
と書いてあるじゃないですか。その通りに行けば良いんです。
一般的なブラウザなら一覧からzipまで辿れるはずです。


>>Forgeの59を探せばいいのでしょうか?
どれを入れるべきかは他の導入Modにも依るので、適切な物を選んでください。

Qクエリ、期限抽出。

アクセスで期限という数値型のデータがあります。
1109,909,912.。。。
これはそれぞれ、2011/09/31,2009/09/31,2009/12/31
という風に解釈するのですが。
この数値データを ○○○○/○○/○○という風に変換というか
抽出するクエリというか式のアドバイスお願いします。
自分では苦肉の策で
([期限]-Right([期限],2))*0.01+2000 & "/" & Right([期限],2)
というようなものを作ってみましたが、
これだと、2011/09,2009/09,2009/12となるだけでうまく、
日まではでてきません。
それともともと数値型のこのデータを日付/時刻型にできれば
日まででてくるのでしょうか?
ここできちんとした日付/時刻型に変換できるとものすごく
うれしいのですが。

Aベストアンサー

質問をちゃんと読んでなかったですね
月末日を求めるのであれば

DateSerial([期限]\100,([期限] Mod 100)+1,0)

Qstatusとstateの違いがいまいちよくわかりません

英語の質問ですので、プログラミングの経験とか全く関係ないく、state及びstatusについての質問です。

しかしながら一応背景を申しますと、プログラミングをしておりまして、表示、非表示、保留(suspended)の状態を格納する変数の名前をstateにしようかstatusにしようかで迷ってるんです。。

goo辞典などで調べてもどちらも「状態」ですし。

statusをwikipediaで調べたら、次のようになってました。
status = state, condition or situation

stateをwikipediaで調べたら、何だかUnited Statesのstateが書かれているみたいでした。(長ったらしくて読んでませんが・・)
http://en.wikipedia.org/wiki/State
ここを見る限り、
stateとは、政治的、社会的な状態のことを意味し、
statusとは、その他の状態的なことを意味するのでしょうか。

まあり英文法について詳しくないのですが、
numberとnumerousの違いのようなものでしょうか?
つまり「数」と「数の」のように、「状態」と「状態の」のような。

(辞書ではどちらも「状態」であり「状態の」といった事は書かれてませんが・・。)

英語の質問ですので、プログラミングの経験とか全く関係ないく、state及びstatusについての質問です。

しかしながら一応背景を申しますと、プログラミングをしておりまして、表示、非表示、保留(suspended)の状態を格納する変数の名前をstateにしようかstatusにしようかで迷ってるんです。。

goo辞典などで調べてもどちらも「状態」ですし。

statusをwikipediaで調べたら、次のようになってました。
status = state, condition or situation

stateをwikipediaで調べたら、何だかUnited Statesのstate...続きを読む

Aベストアンサー

status の方が良さそうですね.理由は英語本来の意味からということではありません.
また,絶対ということでもありません.
こういうのはプログラマーに任されていますから.
以下は,こだわるなら,ということでの解答です.

英語の本来の意味を追求されるのも良いのですが,お仕事の問題ならもっと現実的に考えましょう.英語を専門的に研究されるおつもりではありませんよね.

当業界ではどのような wording を定義しているかを調べそれにならう方が,技術的な整合性のためには有効です.

例えば,当業界でオートマトンの説明に使う「状態遷移」という用語があります.この場合の元の英語は,state transition です.国や州などとは全く無関係です.state と status を比べると,日本語では両方ともに「状態」と言えますが,state の方が広い概念です.state はある特定の時点での物理的な有様を status よりも上位概念で捉えます.status は具体的な個別の状況,たとえば,あるモジュールの戻り値で示される状況などです.

当業界(米国発の英語になります)では,英語の本来の意味がどうあれ,ある技術的な用語を定義するために,英語の微妙な違いを利用し,時には無理を承知で単語を使い分けます.たとえば,オブジェクトというと,英語の object の意味を調べても徒労に終わります.

status の方が良さそうですね.理由は英語本来の意味からということではありません.
また,絶対ということでもありません.
こういうのはプログラマーに任されていますから.
以下は,こだわるなら,ということでの解答です.

英語の本来の意味を追求されるのも良いのですが,お仕事の問題ならもっと現実的に考えましょう.英語を専門的に研究されるおつもりではありませんよね.

当業界ではどのような wording を定義しているかを調べそれにならう方が,技術的な整合性のためには有効です.

例えば...続きを読む

Q集計クエリでの抽出条件

アクセスのクロス集計で質問なのですが・・・
日付ごとの集計を行いたいのですが日付が21日締めで行いたいのです。
フォームで年と月を入れるとその月の集計を行いたいのです。
(例:フォームの日付入力2008/01と入力→集計クエリで2007/12/21~2008/01/20までの集計)
この場合、抽出条件はどのように行えばよいのでしょうか

Aベストアンサー

日付から[月度]を求める式フィールドを作ります

月度: Format(DateAdd("m",-(Day([日付])>20),[日付]),"yyyy/mm")

このフィールドに抽出条件を設定します

フォームのテキストボックスに条件を入力するのなら
=Forms!フォーム名!テキストボックス名

パラメータで条件を入力するのなら
=[年月を入力してください]

いずれの場合もクロス集計クエリのパラメータ指定で
パラメータ名とデータ型を指定しておくことを忘れないでね

QTOEIC単語帳例文にSeveral rescue craft were sent to the

TOEIC
単語帳例文に
Several rescue craft were sent to the seane of crash.
数隻の救助艇が衝突現場に送られた。

severalの後ろには複数形が続くのでcraftsにすべきと思うのですが、なぜcraftなのでしょうか?

理由も知りたいので解説をお願いしますm(__)m

Aベストアンサー

craftsが正しいです。ただし、その例文に前後がもともとあるに違いありません
その文意において、集合的に救助艇を一体として述べているのであれば、例外的に使えます

QAccessのクエリでフィールドの一番大きな数字を抽出させるには?

OSはWin98SE
Access2000です。
多分簡単なことなのかもしれないのですが、追加クエリの抽出条件を使って、
その列(更新回数)でいちばん大きな数字のみ別テーブルに抽出(追加)させたいのですがその式がわからず悩んでいます。

例(主キーなし)
店番号|商品番号|更新回数|金額|・・・
001 |A021  |  2 |300 |・・・
002 |A034  |  1 |200 |・・・
001 |A122  |  1 |150 |・・・
001 |A043  |  3 |500 |・・・

上記で店番号001が3データ入っている中の更新回数が3のデータのみ別のテーブルに追加したいのですが、最大を求めるのでMaxやDMaxを使用したらよいのかな?などと思ったのですが、その先の式の書き方がわからないのでどなたか教えていただけませんか。
どうぞよろしくお願いします。

Aベストアンサー

三度storkです。

蛇足ですが、先ほどの回答は、SQLを直書きするものだったんで、練習用にGUIでの操作で最新データの取り出し方を補足しておきます。

from句に入っているSQLをクエリとして保存してください。
クエリ名は、[最新データ]
-------------------------------------------
select 店番号,max(更新回数) as max更新回数
from [PC売上_T] group by 店番号
-------------------------------------------
どんなクエリになっているかは、デザインビューとデータシートビューで確認してください。

もうひとつクエリを作ります。
デザインビューで[PC売上_T]とさっき作った[最新データ]を追加して、店番号で結合し、さらに更新回数で結合します。結合線がふたつ出来ます。

これで最新のデータのみを抽出するクエリの出来上がりです。

この二つのクエリを一回で済ませると、#1のSQLになります。クエリを二つに分けていると誤ってクエリ[最新データ]を削除すると動作しなくなるので、出来るだけひとつにしましょう。

三度storkです。

蛇足ですが、先ほどの回答は、SQLを直書きするものだったんで、練習用にGUIでの操作で最新データの取り出し方を補足しておきます。

from句に入っているSQLをクエリとして保存してください。
クエリ名は、[最新データ]
-------------------------------------------
select 店番号,max(更新回数) as max更新回数
from [PC売上_T] group by 店番号
-------------------------------------------
どんなクエリになっているかは、デザインビューとデータシートビューで確認してくだ...続きを読む

QMinecraft エラーについて

Minecraftに、Red Power MOD を入れようと試行錯誤(どれをダウンロードすればよいかわからず…)していると、間違えていろいろ消してしまいました…orz
その後、Minecraftを起動すると、エラーメッセージが出てきました。

内容は…
『Forge Mod Loader has found a problem with your minecraft installation
The mods and versions listed below could not be found
IC2 : any
The file 'ForgeModLoader-client-0.log' contains more information』
…とのことです。

意味はさっぱりわかりませんが、Minecraftをプレイできないのは辛いので、解決方法を教えていただけるとありがたいです。
必要であればできる限りのことはします!

回答よろしくお願いします…m(_ _)m


◯PC情報
・Minecraft 1.5.2(新ランチャー)
・Forge 7.8.0.686
・Windows
・MOD 多い

Minecraftに、Red Power MOD を入れようと試行錯誤(どれをダウンロードすればよいかわからず…)していると、間違えていろいろ消してしまいました…orz
その後、Minecraftを起動すると、エラーメッセージが出てきました。

内容は…
『Forge Mod Loader has found a problem with your minecraft installation
The mods and versions listed below could not be found
IC2 : any
The file 'ForgeModLoader-client-0.log' contains more information』
...続きを読む

Aベストアンサー

こんばんわ

エラー内容を要約すると、
「問題を見つけました。
下にリストされたmodsとバージョンはIC2と分かりませんでした。
ファイル「ForgeModLoaderクライアント-0.log」はより多くの情報を含んでいます。」

一番手っ取り早いのはデータの差し替えですね。
バックアップデータがあれば、
minecraftのフォルダごと変えてしまえば問題ありません。

念のため.minecraft内のsavesフォルダは、
別途、コピーしといた方がいいです。

もし、データが無ければ最悪の場合、
前提Modから入れ直しをしなければならないかもしれません。
面倒かもしれませんがバックアップはMod追加時、
または、毎プレイ後に細かく取るようにしましょう。

何か追加情報あれば、
記載のほどお願いします。

では、参考までに。

Qアクセスのクエリで出生時~小学校就学前を抽出

アクセス2002

クエリにて下記2つの抽出方法を教えて下さい。

【抽出条件1】
出生時~小学校就学前(6歳に達した最初の3月31日まで)

【抽出条件2】
小学生~中学生
(4月1日時点で6歳以上)
(15歳に達した最初の3月31日まで)

[Q_顧客]というクエリを作っています。

5つのフィールドがあります。
氏名・年号・生年・月・日

氏名・年号はテキスト型
生年・月・日は数値型

氏名 年号 生年 月 日
花子 昭和 46 1 15
太郎 平成 15 3 13
春子 平成 17 1 11
次郎 平成 14 6 23
夏子 平成 18 4 29
秋子 平成  9 7 12

上記のクエリから、
・出生時~小学校就学前
・小学生~中学生
の2つを抽出したいのですが、どのようにしたら良いか教えて下さい。

日付型で作成してなく、年齢の出し方も分かりません。
データ数も多いので、困っています。
よろしくお願い致します。

Aベストアンサー

質問は

>日付型で作成してなく、年齢の出し方も分かりません。

ということでよろしいでしょうか?

まず、下記の列を追加します。これは生年月日をまとめて西暦になおしたものです。

生年月日:Format([年号] & [生年] & "年" & [月] & "月" & [日] & "日", "yyyy/mm/dd")

次に、下記の列を追加します。
これは、「年齢計算に関する法律」によって誕生日の前日に満年齢に達することになっているためで、学校教育法の第22条の就学の基準では「子女の満六才に達した日の翌日以降における最初の学年の初から」となっているためです。もし、この年齢ではなく、当日に満年齢になる計算をお望みの場合は、「Date()」だけに修正すればよいです。(基準日がわからないので、動かした当日にしています)

基準日:DateAdd("d",+1,Date())

最後に、下記の列を追加します。

年齢:IIf(Format(生年月日,"mm/dd")>Format(基準日,"mm/dd"), DateDiff("yyyy",生年月日,基準日)-1, DateDiff("yyyy",生年月日,基準日))

上記で年齢の出し方は大体分かるかと思います。
あとは年齢をもとに条件にあう列を追加していくことになるか、上記の年齢計算自体を修正するかになると思います。

質問は

>日付型で作成してなく、年齢の出し方も分かりません。

ということでよろしいでしょうか?

まず、下記の列を追加します。これは生年月日をまとめて西暦になおしたものです。

生年月日:Format([年号] & [生年] & "年" & [月] & "月" & [日] & "日", "yyyy/mm/dd")

次に、下記の列を追加します。
これは、「年齢計算に関する法律」によって誕生日の前日に満年齢に達することになっているためで、学校教育法の第22条の就学の基準では「子女の満六才に達した日の翌日以降における最初の学年の初から」と...続きを読む


人気Q&Aランキング