過去ログ

                                Page     366
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼数字を分割したい  いちご 03/8/27(水) 12:48
   ┣Re:数字を分割したい  MJ 03/8/27(水) 13:54
   ┃  ┗Re:数字を分割したい  gio 03/8/27(水) 15:48
   ┃     ┗Re:数字を分割したい  gio 03/8/27(水) 15:55
   ┃        ┗Re:数字を分割したい  いちご 03/8/27(水) 16:05
   ┃           ┣Re:数字を分割したい  こうちゃん 03/8/27(水) 16:52
   ┃           ┣Re:数字を分割したい  gio 03/8/27(水) 17:01
   ┃           ┣Re:数字を分割したい  MJ 03/8/27(水) 17:15
   ┃           ┗gioさん、MJさんに1票  こうちゃん 03/8/27(水) 17:44
   ┃              ┗具体的に書きます。  いちご 03/8/28(木) 9:59
   ┃                 ┗Re:具体的に書きます。  こうちゃん 03/8/28(木) 11:12
   ┃                    ┗Re:具体的に書きます。  いちご 03/8/28(木) 13:23
   ┃                       ┗お願い!!教えて!!  こうちゃん 03/8/28(木) 14:21
   ┃                          ┗Re:お願い!!教えて!!  いちご 03/8/28(木) 17:26
   ┃                             ┗Re:お願い!!教えて!!  こうちゃん 03/8/29(金) 10:54
   ┗≠回答  YU-TANG 03/8/30(土) 16:07
      ┗Re:≠回答  いちご 03/9/3(水) 10:52

 ───────────────────────────────────────
 ■題名 : 数字を分割したい
 ■名前 : いちご
 ■日付 : 03/8/27(水) 12:48
 -------------------------------------------------------------------------
   アクセス上にある数字「111111000001〜111111000010」を分割して表示したのですが
どうすればよいのでしょうか?できればクエリで抽出したときにできればいいかと思うのですが、そのようなことできますか? アクセスはまだまだ初心者なもので。。。。
よろしくお願いします。

 ───────────────────────────────────────  ■題名 : Re:数字を分割したい  ■名前 : MJ  ■日付 : 03/8/27(水) 13:54  -------------------------------------------------------------------------
   Mid関数を使用されてはどうでしょう。

 ───────────────────────────────────────  ■題名 : Re:数字を分割したい  ■名前 : gio  ■日付 : 03/8/27(水) 15:48  -------------------------------------------------------------------------
   こんにちWA

例(VBA):
Dim suuji As String
Dim nami As String

  suuji = "111111000001〜111111000010"
  nami = InStr(suuji, "〜")

  mae = Mid(suuji, 1, nami - 1)
  usiro = Mid(suuji, nami + 1)

こんな感じ?

split関数が使えるのなら、そちらを調べてみて
下さい。あっちの方が簡単かも。

そいでは

 ───────────────────────────────────────  ■題名 : Re:数字を分割したい  ■名前 : gio  ■日付 : 03/8/27(水) 15:55  -------------------------------------------------------------------------
   >Dim nami As String
あっ
nami は Integer だ。

Dim nami As Integer

 ───────────────────────────────────────  ■題名 : Re:数字を分割したい  ■名前 : いちご  ■日付 : 03/8/27(水) 16:05  -------------------------------------------------------------------------
   ▼>Dim nami As Integer
教えて頂いた式はクエリの抽出条件の箇所に入れればいいのですか?
そのあたりも教えてください。どこをどお触ってよいかもわからないのです。
VBAもアクセスも初心者なもので。。。

 ───────────────────────────────────────  ■題名 : Re:数字を分割したい  ■名前 : こうちゃん <nakajima19@hotmail.com>  ■日付 : 03/8/27(水) 16:52  -------------------------------------------------------------------------
   いちごさん、みなさん、こんにちは
横レス失礼しますね。

いちごさん、もっと全体的に具体的に質問してください。
いきなり
>教えて頂いた式はクエリの抽出条件の箇所に入れればいいのですか?
といわれても、みなさん回答しようがありませんよ。

まして
>そのあたりも教えてください。どこをどお触ってよいかもわからないのです。
といわれても、どこをどう答えていいのかわかりません。
いちごさんの聞き方だと、皆さんのような回答以外を期待するのは難しいですよ。


察するところ、たとえば、テーブルのあるフィールドに
111111000001
111111000002
111111000003
111111000004
111111000005
111111000006
111111000007
111111000008
111111000009
111111000010
111111000011
111111000012
111111000013
  ・
  ・
  ・

のようなデータがあって、そのなかから範囲を指定して抽出したいってことなんですか?
もしそのような問い合わせならば、以下のような回答が引き出せるでしょう・・

クエリの抽出条件に
Between "111111000001" And "111111000010"
のように入力してみてください。

 ───────────────────────────────────────  ■題名 : Re:数字を分割したい  ■名前 : gio  ■日付 : 03/8/27(水) 17:01  -------------------------------------------------------------------------
   こんにちWA

もしかしたら自分が勘違いをしてるのかも。。

固定で12桁の数値どうしを分割するのなら、クエリーで
"ある数字"のフィールドがあるテーブルを選択して

クエリのフィールドの所の

1列目に
前: Mid([数字],1,12)

と2列目に
後: Mid([数字],14)

と入力すれば分割して表示されます。

>|   前   |   後    |
*|111111000001 |111111000010 |

ちなみに[数字]は"ある数字"があるテーブル内の
フィールド名を入力してください。

"ある数字"が12桁の固定じゃないときはVBAで対処
できるますが、とりあえず、上のやつを参考にして
みてください。

こうちゃんさんの言うとおりだとしたら、そちらを
参考にしてください。

 ───────────────────────────────────────  ■題名 : Re:数字を分割したい  ■名前 : MJ  ■日付 : 03/8/27(水) 17:15  -------------------------------------------------------------------------
   まるで連想ゲームのようになっていますが、
当方は以下のように想像していました。

テーブルのフィールドに、
111111000001111111000002111111000003〜
というデータが入っていて、これをクエリーで
111111000001 111111000002 111111000003
というフィールドに別けたいのかな? と思ったので、
クエリーのフィールド欄にMid関数を使われては?
と提案した次第です。

この場合は、以下のようになるかと。
フィールド名1:Mid([テーブル名].[フィールド名],1,12)
フィールド名2:Mid([テーブル名].[フィールド名],13,12)
フィールド名3:Mid([テーブル名].[フィールド名],25,12)

 ───────────────────────────────────────  ■題名 : gioさん、MJさんに1票  ■名前 : こうちゃん <nakajima19@hotmail.com>  ■日付 : 03/8/27(水) 17:44  -------------------------------------------------------------------------
   みなさん、こんにちは。
私もgioさん、MJさんのおっしゃるようなことかとも推測したのですが、mid関数の反応があまりよくないようなので、別の推理してみました(^^;)

 ───────────────────────────────────────  ■題名 : 具体的に書きます。  ■名前 : いちご  ■日付 : 03/8/28(木) 9:59  -------------------------------------------------------------------------
   上手く説明できていなかったのでみなさんに迷惑かけました。。
詳しく説明します。
使いたいデータは
111-22(品番)10(数量)111111000001〜111111000010
のアクセスのデータをシールに展開するためにこの「111111000001〜111111000010」
の数字を分割して1〜10まで個別で表示したいのです。
その展開の仕方を知りたいのです。
どこにどの式をいれていいものやらわからずにいます。
アクセスで抽出したデータからエクセルに展開することも可能なのでしょうか?できればテーブルのデータをそのまま使いたいのです。
これでイメージできますでしょうか?
よろしくお願いします。

 ───────────────────────────────────────  ■題名 : Re:具体的に書きます。  ■名前 : こうちゃん <nakajima19@hotmail.com>  ■日付 : 03/8/28(木) 11:12  -------------------------------------------------------------------------
   いちごさん、こんにちは

>上手く説明できていなかったのでみなさんに迷惑かけました。。
>詳しく説明します。
>使いたいデータは
>111-22(品番)10(数量)111111000001〜111111000010
>のアクセスのデータをシールに展開するためにこの「111111000001〜111111000010」
>の数字を分割して1〜10まで個別で表示したいのです。
>その展開の仕方を知りたいのです。

だから、どこに展開するのですか??????
元データの形式はこれまでの質問で、みなさんある程度”想定”できています。
これを、どこにどんな展開をするのかが分からないのです。
シールというのはなんでしょ?
アクセスのレポートで作りたいんでしょうか?
エクセルで作るの?
どんな形式で??
そのあたりは、いちごさん以外は分かりませんので、そこを説明してください。

>どこにどの式をいれていいものやらわからずにいます。
なにをしたいかわからないので、なにをお答えしたらいいものやらわかっていません?

>アクセスで抽出したデータからエクセルに展開することも可能なのでしょうか?できればテーブルのデータをそのまま使いたいのです。
そのまま使うというのはVBAの変数として使えればいいんですか?
それともエクセルのシートに書き込みたいのですか?

展開のしかたそのものは、このスレッドとExcel質問箱で回答されています。
その内容を踏まえて、なにをしたいのかもっともっと具体的に質問してください。
また、これまでの回答内容はご理解いただけたのかどうかとか、回答のここがうまく理解できないとか、こうするにはどうしたらいいとかの反応も欲しいですね。

少し整理しましょう。
「111111000001〜111111000010」の形式のデータがアクセスのテーブルのフィールドにあるんですよね。
これは
「111112000001〜111112000006」とか「111113000004〜111111000016」のように10個とは限らないで変動する値の範囲(いちごさんの例では「数量」フィールドで示される数)になってるってことでいいですか?
さらに、これらは連続した数値ってことでいいですか?

シールはどんな形式で作成するのでしょう?
たとえば、市販のラベルシートを使用してアクセスのレポートで作成するとか、エクセルのシート上で列方向にC列からD,E,F・・に「111111000001」「111111000002」「111111000003」と貼り付けるとか・・

すべてをアクセスで処理したいかどうかとか、アクセスのバージョンとかもあったほうがいいですね。

参考までに、ADOでテーブルを開いてエクセルに貼り付けるコード上げときます。
もし、実行するならADOの参照設定が必要です。
もちろんテーブル名やフィールド名も実際のものにする必要があります。
またエクセルには数値で貼り付けしますので、セルの表示形式を「数値」にしないとうまく表示できないかもしれません。
(Access2000で作成・試験しています)

Sub test()
  Dim DataConn As ADODB.Connection
  Dim rs As ADODB.Recordset
  Dim strSQL As String
  Dim S_Num As Double
  Dim NumCount As Long
  Dim Num() As Double
  Dim i As Integer
  Dim j As Long
  Dim objExlApp As Object
  Dim objExlBook As Object
  Dim objExlSheet As Object
  
  Set DataConn = CurrentProject.Connection
  Set rs = New ADODB.Recordset
  strSQL = "SELECT 品番, 数量, 連番 FROM TABLE1 "
  rs.Open strSQL, DataConn, adOpenStatic
  
  If Not rs.EOF Then
    Set objExlApp = CreateObject("Excel.Application")
    If objExlApp.Workbooks.Count < 1 Then
      objExlApp.Workbooks.Add
    End If
    Set objExlBook = objExlApp.ActiveWorkbook
    Set objExlSheet = objExlBook.Sheets(1)
    j = 0
    Do While Not rs.EOF
      NumCount = rs("数量")
      S_Num = CDbl(Mid(rs("連番"), 1, 12))
      ReDim Num(NumCount - 1)
      For i = 0 To NumCount - 1
        Num(i) = S_Num + i
      Next
      j = j + 1
      objExlSheet.Cells(j, 1).Value = rs("品番")
      objExlSheet.Cells(j, 2).Value = rs("数量")
      For i = 0 To NumCount - 1
        objExlSheet.Cells(j, i + 3).Value = Num(i)
      Next
      rs.MoveNext
    Loop
    objExlApp.Visible = True
    Set objExlSheet = Nothing
    Set objExlBook = Nothing
    Set objExlApp = Nothing
  End If
  rs.Close
  Set rs = Nothing
  Set DataConn = Nothing

End Sub

 ───────────────────────────────────────  ■題名 : Re:具体的に書きます。  ■名前 : いちご  ■日付 : 03/8/28(木) 13:23  -------------------------------------------------------------------------
   ▼こうちゃん さん:
>>アクセスで抽出したデータからエクセルに展開することも可能なのでしょうか?できればテーブルのデータをそのまま使いたいのです。
>そのまま使うというのはVBAの変数として使えればいいんですか?
 VBA変数がわかりません。
>それともエクセルのシートに書き込みたいのですか?
アクセスからエクセルにシートに書き込みたいです。
>展開のしかたそのものは、このスレッドとExcel質問箱で回答されています。
>その内容を踏まえて、なにをしたいのかもっともっと具体的に質問してください。
>また、これまでの回答内容はご理解いただけたのかどうかとか、回答のここがうまく理解できないとか、こうするにはどうしたらいいとかの反応も欲しいですね。
 なかなか上手く伝えることができずすみません。

>
>少し整理しましょう。
>「111111000001〜111111000010」の形式のデータがアクセスのテーブルのフィールドにあるんですよね。
>これは
>「111112000001〜111112000006」とか「111113000004〜111111000016」のように10個とは限らないで変動する値の範囲(いちごさんの例では「数量」フィールドで示される数)になってるってことでいいですか? →10個とは限らずいろんな数が存在します。
>さらに、これらは連続した数値ってことでいいですか?
連続した数値です。
 例 444-44 10 44444400001〜444444000010
   333-33 5  333333000001〜333333000005
   333-34 4  333333000006〜333333000010
 これはシールマシンでシールを発行したあとにこのアクセスのテーブルに上記のようにデータがおちてくる仕組みになっています。

>
>シールはどんな形式で作成するのでしょう?
>たとえば、市販のラベルシートを使用してアクセスのレポートで作成するとか、エクセルのシート上で列方向にC列からD,E,F・・に「111111000001」「111111000002」「111111000003」と貼り付けるとか・・
 市販のラベルシールにCODE39で貼り付けます。この「〜」のデータがでてくれば
 貼り付けるのは簡単なのです。
 あとアクセスのレポートから市販のラベルに展開することが可能なのですか???
>
>すべてをアクセスで処理したいかどうかとか、アクセスのバージョンとかもあったほうがいいですね。
すべてアクセスで処理するのがミスを防ぐにもいいのです。できれば使いやすいエクセルに展開できればと思ったのです。

>参考までに、ADOでテーブルを開いてエクセルに貼り付けるコード上げときます。
これをやってみます。

 ───────────────────────────────────────  ■題名 : お願い!!教えて!!  ■名前 : こうちゃん <nakajima19@hotmail.com>  ■日付 : 03/8/28(木) 14:21  -------------------------------------------------------------------------
   いちごさん、欲求不満でもだえてます。

>>少し整理しましょう。
>>「111111000001〜111111000010」の形式のデータがアクセスのテーブルのフィールドにあるんですよね。
>>これは
>>「111112000001〜111112000006」とか「111113000004〜111111000016」のように10個とは限らないで変動する値の範囲(いちごさんの例では「数量」フィールドで示される数)になってるってことでいいですか? →10個とは限らずいろんな数が存在します。
>>さらに、これらは連続した数値ってことでいいですか?
>連続した数値です。
> 例 444-44 10 44444400001〜444444000010
>   333-33 5  333333000001〜333333000005
>   333-34 4  333333000006〜333333000010
> これはシールマシンでシールを発行したあとにこのアクセスのテーブルに上記のようにデータがおちてくる仕組みになっています。
ここは理解しています。

>>シールはどんな形式で作成するのでしょう?
>>たとえば、市販のラベルシートを使用してアクセスのレポートで作成するとか、エクセルのシート上で列方向にC列からD,E,F・・に「111111000001」「111111000002」「111111000003」と貼り付けるとか・・
> 市販のラベルシールにCODE39で貼り付けます。この「〜」のデータがでてくれば
だから「どこに」でてきて欲しいの・・

> 貼り付けるのは簡単なのです。
貼り付けるのはVBAでするの??????????
現在している処理と期待している処理を、お願いだから教えてください。

> あとアクセスのレポートから市販のラベルに展開することが可能なのですか???

たとえばA4の用紙にシール付きのラベルが配置されているようなラベルシートにレポートを印刷するようなことは普通におこなわれています。
ただCODE39ってのがわからないので、この形式でできるかどうかはわかりません。


>>参考までに、ADOでテーブルを開いてエクセルに貼り付けるコード上げときます。
>これをやってみます。
わからなければ、具体的に、できればコードを添えて、質問してください(^^;)

 ───────────────────────────────────────  ■題名 : Re:お願い!!教えて!!  ■名前 : いちご  ■日付 : 03/8/28(木) 17:26  -------------------------------------------------------------------------
   ▼こうちゃん さん:>
>>>シールはどんな形式で作成するのでしょう?
>>>たとえば、市販のラベルシートを使用してアクセスのレポートで作成するとか、エクセルのシート上で列方向にC列からD,E,F・・に「111111000001」「111111000002」「111111000003」と貼り付けるとか・・
>> 市販のラベルシールにCODE39で貼り付けます。この「〜」のデータがでてくれば
>だから「どこに」でてきて欲しいの・・
エクセルです。
>
>> 貼り付けるのは簡単なのです。
>貼り付けるのはVBAでするの??????????
ここは市販のソフトで行います。VBAとかでもありません。
>現在している処理と期待している処理を、お願いだから教えてください。
現在はただアクセスのデータがあるのみです。その分割したい部分をエクセルに落としたいのです。そこから市販のソフトを使いデータを呼び込みます。
したい処理は「〜」の部分の間の数字を表示したいだけです。
ですのでアクセスからエクセルへこのデータの落とし方を教えてください。
何度もすみません。

 ───────────────────────────────────────  ■題名 : Re:お願い!!教えて!!  ■名前 : こうちゃん <nakajima19@hotmail.com>  ■日付 : 03/8/29(金) 10:54  -------------------------------------------------------------------------
   いちごさん、こんにちは

>エクセルです。
>ここは市販のソフトで行います。VBAとかでもありません。

その市販のソフトにエクセルのファイルを直接わたすのですか?
「エクセルのシートのどの位置にどのように表示すればいいのか」を聞いているのですが、そこはお答えいただけないのですか?

数値で貼り付けていいのですか?
前の書き込みで示したサンプルコードはそのまま数値で貼り付けておりますので、表示形式を変更しないと数字のままは見えませんがいいのですか?
また、数字を右方向(列方向)に展開していますが、それでいいのですか?
品番の表示は必要ですか?
等々、出力したい「形」をご説明ください。

>アクセスからエクセルへこのデータの落とし方を教えてください。
前の書き込みで示したサンプルコードでは、いかがでしょうか?

#先日来、BBSの調子がいまいちのような・・・、私のPCがおかしいのかな?

 ───────────────────────────────────────  ■題名 : ≠回答  ■名前 : YU-TANG  ■日付 : 03/8/30(土) 16:07  ■Web : http://www.f3.dion.ne.jp/~element/msaccess/  -------------------------------------------------------------------------
   そもそも いちご さんは VBA 可なのでしょうかね。

これは VBA 必須のケースでしょうから、VBA 不可であればその時点で
アウトでしょうし、可なら自力脱出可能なヒントの提示で済むはずです。
どうも いちご さんの代わりに仕事をする方向に流れているように見え
ますが、それで完璧なコードが出来たとして、本人にメンテンナンスも
何も出来ないコードを渡すことに何か意味が有るのかどうか、よく
分かりません。
少なくとも BBS と無料外注請負のあいだには境界が有るはずだと個人的
には思ったりします。

ここは *VBA* 質問箱という板なのであって、別に私は原理主義を振り
かざす気は毛頭有りませんが、すでに皆さん充分に方法論は提示して
いらっしゃるわけで、もしこれが話として通じないなら、単なる板違い
ではないでしょうかね。

# 不適切な発言でしたら削除してください> WebMaster 殿

 ───────────────────────────────────────  ■題名 : Re:≠回答  ■名前 : いちご  ■日付 : 03/9/3(水) 10:52  -------------------------------------------------------------------------
   いろりろありがとうございました。
あとは自力でなんとかしていきます。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 366