ランダムアクセスファイル(自作データファイル)で最終レコードの番号を
求める方法がわかりません。
seek関数をループを使って求める?? かな??と思っているのですが
実際やってみるとうまくいかないのですが、もっと簡単にできる方法はないのでしょうか。

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

A 回答 (4件)

FileLenまたはLOFをレコードサイズで割ればよい

    • good
    • 0
この回答へのお礼

的確なお答えをいただきありがとうございます。言われてみれば単純なことですよね。

お礼日時:2001/06/20 23:25

自作データファイルならば、ファイルの先頭に総レコード数をつければよいのでは…

    • good
    • 0
この回答へのお礼

さまざまな方法がありますね。ありがとうございました。

お礼日時:2001/06/20 23:27

こんにちは、honiyonです。



一番簡単な方法です。

1.データ読み込み
2.EOF(ファイル終端)なら終了。
  そうでないなら1へ

 このデータ読み込みを何回出来たか?を数える事によって求められます。
 あまり良い方法ではないですが(^^;

 参考になれば幸いです(..
    • good
    • 0
この回答へのお礼

そうですね。 いちばん簡単そうな方法ですが、データが膨大になると処理にじかんがかかりそうですね。

お礼日時:2001/06/20 23:23

 これは、求めるために特別な決まった方法はありません。



 ファイルサイズが分かっていて、レコードサイズが固定ならばそこから逆算できますし、レコードサイズがまちまちならば、実際に読み込んでみるしかありません。
 自作ということですから、レコードサイズを固定にすればいいかと思います。
    • good
    • 0
この回答へのお礼

そうですね。 よく考えればわかったことでした。

お礼日時:2001/06/20 23:20

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

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

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

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

Qレコード針、カートリッジ、ベルトの交換について質問です。

レコード針、カートリッジ、ベルトの交換について質問です。

最近レコードプレイヤーを購入しました。Pro-ject Debutという機種です。

予備のために交換用のカートリッジや針、ベルトを購入したいと考え、
このモデルに合うものはあるか、購入元のCISCO RECORDSに問合せをしたのですが、
「日本の正規代理店が事業撤退することになり、サポートできない」ということでした。

私はレコードに関してはかなりの初心者なので、色々ウェブ等で調べてみても判然としません。
当初、レコード針のことを「カートリッジ」というのだと思っていましたが、どうも違うみたいですし…。
それくらいの知識しか持ち合わせておりません。

私の知りたいことを以下にまとめました。

Q1、私のプレイヤーはカートリッジ交換(それとも針の交換)が可能なのでしょうか?
Q2、交換可能だとすれば、どのような機種があるでしょうか?日本で扱いがあるものが希望です。
Q3、ベルトは長ささえ合えば付け替え可能なのでしょうか?

●所有プレイヤー 「Pro-ject Debut」
http://www.cisco-records.co.jp/docs/topics/other/projectaudiosystems.php

●プレイヤーについていたカートリッジ 「Ortofon OM 5E」
http://www.ortofon.com/html/profile.asp?body_magnetic_technical_data.asp
※このページのOM 5Eという機種です。


皆様の回答をお待ちしてます。

レコード針、カートリッジ、ベルトの交換について質問です。

最近レコードプレイヤーを購入しました。Pro-ject Debutという機種です。

予備のために交換用のカートリッジや針、ベルトを購入したいと考え、
このモデルに合うものはあるか、購入元のCISCO RECORDSに問合せをしたのですが、
「日本の正規代理店が事業撤退することになり、サポートできない」ということでした。

私はレコードに関してはかなりの初心者なので、色々ウェブ等で調べてみても判然としません。
当初、レコード針のことを「カー...続きを読む

Aベストアンサー

レコードプレーヤーを長年所有している者です
画像から察しますと、高出力のMM型カートリッジと思います
交換は、他のメーカのカートリッジでもOKです。
お持ちのアンプがフォノ対応で、MMやMC選択出来る物でしたら国内で販売している殆どの物は大丈夫です
そうでなければ、高出力のMMカートリッジになります
カートリッジの取り付け用ねじ穴は、統一されていますので、どのメーカーでも合います
カートリッジを交換しましたら、針圧を無負荷の状態でアームが水平になるようにバランスをとり、カートリッジ指定の針圧を架ければOKです
ベルトの方ですが、すぐにへたる物ではないので暫くは大丈夫ですが、
モータの回転を伝える物ですので、同じ長さの物があれば代用出来るかと思います
最悪、丈夫な凧糸を巻きつけてもいけるかなと考えます

QADOレコードセット操作(Forループ用の変数)

CSVファイルからADO接続でレコードセットを取得し、
順次出力していきたいと考えています。
CSVファイルにはフィールド名が含まれていないので
schema.iniで
 Col1=F1 char
 Col2=F2 char
 Col3=F3 char
 Col4=F4 char
 Col5=F5 char
 Col6=F6 char・・・
という要領で名前を付けています。

現在、
myData(1)=recordset![F1]
myData(2)=recordset![F2]
myData(3)=recordset![F3]・・・

という形でフィールド数と同じ行数、レコードを取り出すコードを記述していますが、これを

 For i = 1 to 6
  myData(i)=recordset!F[i]
 Next i

・・・のような形でForループにできないかと試行錯誤しています。

うまい具合にフィールド名の連番数字を使うには、どのようにしたら
よいものでしょうか?

CSVファイルからADO接続でレコードセットを取得し、
順次出力していきたいと考えています。
CSVファイルにはフィールド名が含まれていないので
schema.iniで
 Col1=F1 char
 Col2=F2 char
 Col3=F3 char
 Col4=F4 char
 Col5=F5 char
 Col6=F6 char・・・
という要領で名前を付けています。

現在、
myData(1)=recordset![F1]
myData(2)=recordset![F2]
myData(3)=recordset![F3]・・・

という形でフィールド数と同じ行数、レコードを取り出すコードを記述していますが、これを
...続きを読む

Aベストアンサー

今現在、検証はできませんが下記でできませんか。
Dim strFIELD As String

For i = 1 to 6
 strFIELD = "F" & i
 myData(i)=recordset(strFIELD)
Next i

Qレコードカートリッジのダンパーの件

お世話になります。レコードプレーヤーの初心者です。カートリッジのダンパー交換というのを目にしたのですが、ダンパーはカートリッジ本体の中にあるのでしょうか。また、針を新品に交換しても音は改善されないのでしょうか。基本すぎる質問ですいませんが、ご回答お待ちしております。宜しくお願い致します。

Aベストアンサー

カートリッジは、アナログレコードの溝に沿った「レコード針」の動きを、電磁気的に電気信号に変換するものです。レコード針をカートリッジ本体に固定し、かつレコードの溝に沿って自由に動くようにするために、主に「ゴム」などの弾性体でできた「ダンパー」で針を支持します。
 あまり良い図が見当たりませんが、こんなところを参考に。
http://www.phileweb.com/magazine/audio-course/archives/2008/11/20.html
http://www.phileweb.com/magazine/audio-course/uploads/cartrige.jpg

 ダンパーはカートリッジの中の一部品あり、型式によっては(MC型など)針とダンパーが一体で、この場合には針自体をメーカで交換してもらう必要があります。
 なお、「針を交換する」のは、針先(スタイラスチップ、通常はダイヤモンド製)がレコード面をこすって摩耗するからであり、「消耗品の交換」であって音質向上のためではありません。「消耗したら新品に交換しながら使う」というのが通常の使い方であり、「針」は交換できるように設計されています。

 ダンパーは「ゴム」などの弾性体である以上、ある程度経年劣化し、設計上想定した初期特性から変化が起こります。ただし、「針」と違って、「ダンパー」は交換を前提にした設計はされていないのが普通です。
 カートリッジは精密機械であり、ダンパーを「交換する」ことで初期値の特性に戻すというのは、考え方としてはあり得ますが、もともと「カートリッジ」として一体で設計・製作されたものの一部を素人が交換しても、良くなる保証はありません。
 最もよいのは、やはり「ダンパーの劣化したカートリッジ」全体を、「劣化していない、設計当初の特性のダンパーを持ったカートリッジ」に交換することかと思います。(針とダンパーが一体となった機種では、消耗品の針を交換することで、ダンパーも交換されることになります)

 「アナログ」オーディオは、モノを変えれば必ず「音」も変わります。問題は、それが「向上」なのか「低下」なのかということです。自己責任&自己満足でトライするマニアも多いようですが、初心者はやめておいた方がよいと思います。

カートリッジは、アナログレコードの溝に沿った「レコード針」の動きを、電磁気的に電気信号に変換するものです。レコード針をカートリッジ本体に固定し、かつレコードの溝に沿って自由に動くようにするために、主に「ゴム」などの弾性体でできた「ダンパー」で針を支持します。
 あまり良い図が見当たりませんが、こんなところを参考に。
http://www.phileweb.com/magazine/audio-course/archives/2008/11/20.html
http://www.phileweb.com/magazine/audio-course/uploads/cartrige.jpg

 ダンパーはカー...続きを読む

QADOでループすると1レコードずつ飛ばしてしまう

アクセスなのですが

Sub test()
Set cn = CurrentProject.Connection
rs.Open "テーブル", cn, adOpenKeyset, adLockOptimistic
rs.Filter = "(店名 = '" & str店名 & "') And (URL = '未')"

For j = 1 To rs.RecordCount

rs("URL") = "http"
rs.Update

rs.MoveNext
Next

rs.Close: Set rs = Nothing
cn.Close: Set cn = Nothing
End Sub


このようにして、既存のレコードにフィルタをかけて該当のレコードの値を更新しているのですが
rs.MoveNext
をいれると、
1レコード目、3レコード目、5レコード目・・・と言う順番になってしまい、
最終的にrs.RecordCountの数を越したレコードを指定してしまい

実行時エラー 3021

「BOFとEOFのいずれかTRUEになっていか、または現のレコードが要求された操作には、現在のレコードが必要です。」

となってしまいます。

だからって rs.MoveNextをいれないと、rs.RecordCountに達するまで、
いつまでも同じレコードをループしてしまいます。

1レコードずつ順番にデータを掴む方法を教えてください。

アクセスなのですが

Sub test()
Set cn = CurrentProject.Connection
rs.Open "テーブル", cn, adOpenKeyset, adLockOptimistic
rs.Filter = "(店名 = '" & str店名 & "') And (URL = '未')"

For j = 1 To rs.RecordCount

rs("URL") = "http"
rs.Update

rs.MoveNext
Next

rs.Close: Set rs = Nothing
cn.Close: Set cn = Nothing
End Sub


このようにして、既存のレコードにフィルタをかけて該当のレコードの値を更新しているのですが
rs.MoveNext
をいれると、
1レコード目、3レ...続きを読む

Aベストアンサー

原因は、CursorLocation が規定値の adUseServer になっているので
Rs.Filter してしまうと 正しく動いてくれません。

Set cn = CurrentProject.Connection
rs.CursorLocation = adUseClient '←追加
rs.Open "テーブル", cn, adOpenKeyset, adLockOptimistic

とするか Filter ではなく

rs.Open "SELECT * FROM テーブル WHERE 店名 ='" & str店名 & "' and URL ='未'", cn, adOpenKeyset, adLockOptimistic
'rs.Filter = "(店名 = '" & str店名 & "') And (URL = '未')"
とSQL中にWHERE句で指定します。

でも、更新クエリで片づけたほうが良さそうにも思えます。
UPDATE テーブル SET テーブル.URL = 'http'
WHERE [テーブル].URL='未' AND [テーブル].店名='来々軒';

原因は、CursorLocation が規定値の adUseServer になっているので
Rs.Filter してしまうと 正しく動いてくれません。

Set cn = CurrentProject.Connection
rs.CursorLocation = adUseClient '←追加
rs.Open "テーブル", cn, adOpenKeyset, adLockOptimistic

とするか Filter ではなく

rs.Open "SELECT * FROM テーブル WHERE 店名 ='" & str店名 & "' and URL ='未'", cn, adOpenKeyset, adLockOptimistic
'rs.Filter = "(店名 = '" & str店名 & "') And (URL = '未')"
とSQL中にWHERE句で指定します。

でも...続きを読む

Qレコードカートリッジの寿命?

ガラクタ整理していましたらカートリッジキーパー、レコードカートリッジを数個収納できるケースが出てきました。たぶん20年から25年前のものですが使って大丈夫なのでしょうか?確か振動系にゴム系の部品を使っていたような気がします。いくら暗所でもきついでしょうか?デンオン103とかエンパイヤとかあります。

Aベストアンサー

オルトフォンMC20とエラックSTS455というカートリッジを所有しています。ともにCD時代になってから、20年以上も使わずに放置していました。ゴムダンパーが硬化して、もはや使い物にならないだろうと考えていました。

ところが、LPを再生する必要が生じて試しに物置から引っ張り出してみたところ、立派に役に立ったどころか、CDを上回る豊麗な音質にびっくり。とりわけエラックで聴く日本プレスLPの、潤いに富んだ情報量の極めて多い音質は感涙ものでした。CD前夜の70年代末~80年代初めに製造された日本盤LPの技術水準の高さは、CDが逆立ちしてもかないません。

CDも最新録音のものは優れた音質ですが、LP時代の音源をCD化したものは音質がLPに比べて明らかに落ちます。情報量が半分ぐらいに減っている感じ。アナログ録音特有のテープノイズを除去する処理が音質を劣化させているようです。

デンオンDL103は、NHKの放送業務用に開発されたもので、カートリッジの原器とも言うべき名機です。大切になさってください。そしてアナログ・オーディオの豊潤な音質を存分に楽しんでください。

オルトフォンMC20とエラックSTS455というカートリッジを所有しています。ともにCD時代になってから、20年以上も使わずに放置していました。ゴムダンパーが硬化して、もはや使い物にならないだろうと考えていました。

ところが、LPを再生する必要が生じて試しに物置から引っ張り出してみたところ、立派に役に立ったどころか、CDを上回る豊麗な音質にびっくり。とりわけエラックで聴く日本プレスLPの、潤いに富んだ情報量の極めて多い音質は感涙ものでした。CD前夜の70年代末~80年代初めに製造された日本盤LPの...続きを読む

Q【MS Access2000 VBA ですが】 レポートの詳細セクションで、最終レコードである事を知る方法

MicroSoft Access2000 VBAでアプリケーションを作成しています。

あるテーブルをレコードソースとしてレポートを出力しています。
「詳細セクション」で、現在印刷するレコードが最終レコードである事を知る方法を調べています。
ご存知の方いらっしゃいましたらよろしくお願い致します。

Aベストアンサー

こんにちは。maruru01です。

あらかじめ、レポートソースのレコード数を取得しておいて、詳細セクションのFormatイベントで、カウンタ変数をインクリメントしていき、レコード数と比較すればいいのではないでしょうか。
データ数は、DCount関数で取得出来ます。


(レポートの宣言部)
Private DataCount As Long 'データ総数
Private Counter As Long 'カウンタ

(Report_Openイベント)
DataCount = DCount("フィールド名", "テーブル名" ,抽出条件)
Counter = 0

(詳細_Formatイベント)
Counter = Counter + 1
If Counter = DCount Then
  MsgBox "最終データ"
End If

Qレコードプレイヤのカートリッジについて

レコードプレイヤをオークションで買おうと思うのですが、カートリッジがついてないようです(アームから先がない)
そこで中古のカートリッジも一緒に買おうと思うのですが、適当に買って大丈夫でしょうか?
MM方式やらMC方式などがあると聞くのですが違いがわかりません。購入時の注意点などお教えください。
よろしくお願いします。

Aベストアンサー

まず、お持ちのアンプにPHONO入力端子がありますか?
また、PHONO入力端子について、MC/MMの切り替えスイッチがありますか?
PHONO入力端子があれば、アナログプレーヤーを接続できますが、なければ、PHONOアンプが別途必要です。
PHONO端子があり、MC/MMの切り替えスイッチがあれば、カートリッジに応じてスイッチを切り替えれば、問題なく再生できます。
PHONO端子があり、MC/MMの切り替えスイッチがない場合、MC型のカートリッジを繋ぐには、出力電圧が小さいため、PHONO端子とカートリッジの間に、MCヘッドアンプまたはMCトランスが必要です。

また、トーンアームの先にあるコネクタあらカートリッジ側がないのですよね。
そうだとすると、カートリッジと合わせて、カートリッジを取り付けるヘッドシェルというものを買う必要があります(一体になったカートリッジもある)。

QAccess2000でseekの複数条件検索

M_SQL = "SELECT * FROM T_請求残高 WHERE 得code='" & T10![得code] & "' AND 請求対象日2<#" & Me![締切日] & "# ORDER BY 請求対象日2 DESC"
Set T02 = DB.OpenRecordset("" & M_SQL & "", dbOpenDynaset)

という条件でデータを抽出していますが、
いくつか処理および多数のデータを処理する為に、1度の処理に1、2時間が掛かってしまいます。
この処理を
テーブルにINDEXを設定し、SEEKを使用したいと思っていますが、
"="と"<"という異なった条件を処理することは可能でしょうか?

VBA初心者です。わかりやすく教えていただけると助かります。

Aベストアンサー

引き続き。
まずはご質問の回答から。

Seekでは複数条件を設定できないようです。
複数条件をつけるなら、Findfirstで行けるとは思います。

さて、その上で質問になりますが、上記の

 得code='" & T10![得code] & "' AND 請求対象日2<#" & Me![締切日]

にあたるレコードは1件だけなのでしょうか?
(たとえば、上記の条件該当するレコード(商品)は1件のみで、その価格を参照
 したいだけなどの場合)

SeekにしてもFindfirstにしても、カレントレコードに移動するだけですので
該当レコードが複数ある場合は使えませんよ。

重ねて質問ですが、25万件のレコードは「T_請求残高」のレコード数でしょうか?
また、「T_請求残高」から上記の条件(得コードと締日)で抽出されるレコード
数は概算でどれくらいになるのでしょうか?
それとも、(処理2)内で別に参照するテーブルのレコード数でしょうか?
申し訳ないですが、状況がわかりにくいです。もう少しテーブルの構造、処理内容、
レコード数を示してもらえるといい回答ができると思います。

引き続き。
まずはご質問の回答から。

Seekでは複数条件を設定できないようです。
複数条件をつけるなら、Findfirstで行けるとは思います。

さて、その上で質問になりますが、上記の

 得code='" & T10![得code] & "' AND 請求対象日2<#" & Me![締切日]

にあたるレコードは1件だけなのでしょうか?
(たとえば、上記の条件該当するレコード(商品)は1件のみで、その価格を参照
 したいだけなどの場合)

SeekにしてもFindfirstにしても、カレントレコードに移動するだけですので
該当レコ...続きを読む

Qカートリッジのボディがレコード盤に当たる

 この間新しいカートリッジに取り替えたら適性針圧にも関わらず、カートリッジのボディの出っ張りがレコード盤に当たります。少し針圧を軽くしても同じでした。どうしたらよいのでしょうか?

Aベストアンサー

トーンアームの高さを調整する事。

Q【VB】もっと簡単に書けないかな?

お世話になっております。VB2005を最近かじりました。
フォーム上にボタンが100個ほど並んでいます。

グローバル変数としてboolean型のフラグを立てて、
ボタンを押したらボタンの色がピンクに、もう一度押したら元の色にという
ごく簡単なプログラムを書きたいのですが、

1個のボタンごとに

Private Flag as Boolean

  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  Select Case Flag
    Case False
      Button1.BackColor = Color.Pink
      Flag = True
    Case True
      Button1.BackColor = Color.FromKnownColor(KnownColor.ControlLight)
      Flag = False
    End Select
  End Sub

というプログラムを書くと100個同じようなプログラムを書かなくてはいけなくなり、大変手間がかかりメンテも大変です。
もっと簡単にする方法があったら教えていただきたく存じます。

お世話になっております。VB2005を最近かじりました。
フォーム上にボタンが100個ほど並んでいます。

グローバル変数としてboolean型のフラグを立てて、
ボタンを押したらボタンの色がピンクに、もう一度押したら元の色にという
ごく簡単なプログラムを書きたいのですが、

1個のボタンごとに

Private Flag as Boolean

  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  Select Case Flag
    Case False
      ...続きを読む

Aベストアンサー

こんにちは。

コントロールを配列で管理する方法もあります。

コントロールを配列で管理する
http://vbdotnet.fc2web.com/vbnet/control/Control02.htm
ここが参考になります。

上記の配列に格納する部分ですが、100個もやるのは大変なので

For I = 0 To 99
btnArray(I) = Me.Controls("Button" & I)
Next

とするといいでしょう。(ボタン名は変更していないとします。)

それから、イベントハンドルの登録をこのループに入れるといいでしょう。

どうでしょうか。


人気Q&Aランキング

おすすめ情報