プロが教えるわが家の防犯対策術!

初めての試みで、小さな会社のデータベースを作ろうとしています。顧客の名前を入力した際、ふりがなを生成するようにしていますが、これをアルファベット表記に変換する、関数あるいは方法を知りたいのですが。目的は、そのアルファベットから取り出した文字をランダムに組み合わせて7桁のパスワードを作ることです。(5.5J使用)ご教授いただければ助かります。よろしくお願いいたします。

A 回答 (10件)

アルファベットへの変換ですが、


#1の方法とは別に、

フィールド「ひらがな」(グローバル・テキスト)

(内容)あいうえおかきくけこ・・・(連続して)

フィールド「alphabet」(グローバル・テキスト)

(内容)a i u e o ka ki ku ke ko ...(スペースで区切って)

として、

フィールド設定[ アルファベット, "" ]
フィールド設定[ ワーク, TrimAll(ふりがな, 1, 0) ]
フィールド設定[ 長さ, Length(ワーク) ]
フィールド設定[ 文字位置, 1 ]
Loop
Exit Loop If [ Length(ワーク) < 文字位置]
フィールド設定[ アルファベット, アルファベット& MiddleWords(alphabet, Position(ひらがな,
Middle(ワーク, 文字位置, 1), 1, 1), 1) ]
フィールド設定[ 文字位置, 文字位置+ 1 ]
End Loop

という手もあります。
ただし、拗音などがうまく変換できません。
でも、パスワード生成には厳密に変換できなくてもOKではないでしょうか。

いずれにしてもあまりご希望どおりにはいかないかもしれません。
    • good
    • 0

より詳しい方々に質問されるのであれば、「ファイルメーカーユーザのページ」のメーリングリストに参加されることをおすすめします。



参考URL:http://www.ogawa.tokushima.tokushima.jp/~fmjuser/
    • good
    • 0
この回答へのお礼

手取り足取りありがとうございます。早速参加してみます。

お礼日時:2003/03/09 20:12

私の知る範囲では無理です。



修飾キー(shiftなど)は取れるようですが、ローマ字キーは取れないと思います。

もしかしたらプラグインや外部関数などがあるのかもしれません。

ファイルメーカーの長所は単純であることだと思っています。私も使い始めは「なんでこんなこともできないの?」と思うことがたびたびありました。でも、深みにはまりにくい(私はAccessで深みにはまってなかなか抜けられなくなりました。お恥ずかしい...。)のがよいところです。マニアックになりにくい分、いざというときに初心者にも引き継げますし。
俳句のように17文字の制約のなかで、四苦八苦するものと割り切って使用しています。
    • good
    • 0

#6の訂正です。

間違いが多くてごめんなさい。
(いつも試行錯誤の毎日です。)

フィールド設定[アルファベット,*1]  の部分は

フィールド設定[パスワード,*1]    です。
    • good
    • 0
この回答へのお礼

たくさんのご解答をいただき、ありがとうございます。失礼を承知で再度お尋ねしたいのですが、ローマ字入力時のキーをそのまま値とできれば、さらによいかと思うのですが、実現はファイルメーカーだけでは不可能なのでしょうか?お手数ですが、よろしければご解答くださいませ。

お礼日時:2003/03/09 15:52

#5よりもっと単純に



フィールド設定[アルファベット,*1]

*1の内容

Middle(アルファベット,Int(Random * Length(アルファベット) + 1),1) &
Middle(アルファベット,Int(Random * Length(アルファベット) + 1),1) &
Middle(アルファベット,Int(Random * Length(アルファベット) + 1),1) &
Middle(アルファベット,Int(Random * Length(アルファベット) + 1),1) &
Middle(アルファベット,Int(Random * Length(アルファベット) + 1),1) &
Middle(アルファベット,Int(Random * Length(アルファベット) + 1),1) &
Middle(アルファベット,Int(Random * Length(アルファベット) + 1),1)

でも可能です。
    • good
    • 0

#4の補足です。



7桁にする部分を見落としていました。

無理にすべての文字をランダムに並べかえなくても、単純にランダムに選択していけばよいだけかもしれません。

フィールド定義の「ワーク」は使用せず、「残りの長さ」を単に「長さ」として、

スクリプトは、

フィールド設定[「パスワード」,「""」]
フィールド設定[「長さ」,「1」]
Loop
Exit Loop if[「長さ > 7」]
フィールド設定[「文字位置」,「Int(Random * Length(アルファベット) + 1)」]
フィールド設定[「パスワード」,「パスワード & Middle(アルファベット,文字位置,1)」]
フィールド設定[「長さ」,「長さ + 1」]
End Loop
    • good
    • 0

パスワードを作る部分については、



フィールド定義が以下の通りで、ふりがなからアルファベットに変換済みとすると、

「ふりがな」   (テキスト)
「アルファベット」(テキスト)
「パスワード」  (テキスト)
「ワーク」    (テキスト)
「残りの長さ」  (数字またはグローバル)
「文字位置」   (数字またはグローバル)

スクリプトは、

フィールド設定[「パスワード」,「""」]
フィールド設定[「ワーク」,「アルファベット」]
フィールド設定[「残りの長さ」,「Length(ワーク)」]
Loop
Exit Loop if[「残りの長さ < 1」]
フィールド設定[「文字位置」,「Int(Random * 残りの長さ + 1)」]
フィールド設定[「パスワード」,「パスワード & Middle(ワーク,文字位置,1)」]
フィールド設定[「ワーク」,「Left(ワーク, 文字位置 - 1) & Right(ワーク, 残りの長さ - 1)」]
フィールド設定[「残りの長さ」,「Length(ワーク)」]
End Loop

というのではどうでしょうか?
まず「アルファベット」を「ワーク」に移し、「ワーク」からランダム関数で1文字ずつ「アルファベット」に移していくという考えかたです。
空白とかは考慮していません。
TrimAll関数などで調整してください。
    • good
    • 0

ファイルメーカーのファイルをエクセルにインポートできるかどうかわかりませんが、出来るとして、


エクセルVBAでやって見ました。
(1)変換表の作成準備(Sheet1のA,B列)
Sub test03()
For i = 1 To 84
Cells(i, 1) = Chr(-32098 + i)
Next i
End Sub
を実行するとSheet1のA列に全角ひらがな文字がセットできます。
B列に対応したローマ字を自分で入力します。例えば「か」の行にはkaと入れる。数分で入力できました。
(2)Sheet3のA列からひらがな名が入っているとして
下記を実行すると、B列に対応したローマ字が出ます。
Sub test04()
Worksheets("sheet3").Activate
d = Range("a1").CurrentRegion.Rows.Count
For i = 1 To d
s = ""
c = Worksheets("sheet3").Cells(i, 1)
' MsgBox c
For j = 1 To Len(c)
m = Mid(c, j, 1)
If m = " " Then
s = s & " "
Else
r = Asc(m) + 32098
s = s & Worksheets("sheet1").Cells(r, 2)
End If
Next j
Worksheets("sheet3").Cells(i, 2) = s
Next i
End Sub
テストが充分でなく、特殊な場合にバグがあるかも知れませんが、出来そうだと言うことでご参考までに。
はっ音、拗音の字は、名前にあまり無いだろうと、考慮外です。締めきりを気にしつつ、取り急ぎ。
    • good
    • 0
この回答へのお礼

お持ち合わせの知識で善意あふれるご解答をいただき感謝いたします。VBAの経験もないのですが、後学のため大切にさせていただきます。

お礼日時:2003/03/09 15:47

#1の訂正です。


濁音、半濁音・・・の部分は無視してください。勘違いでした。
    • good
    • 0

確かアルファベットに変換する関数はなかったように記憶しております。


方法としては、

「ふりがな」フィールドから「アルファベット」フィールドにスクリプトで変換することが考えられます。

フィールド設定[「アルファベット」,「ふりがな」]
フィールド設定[「アルファベット」,「Substitute(アルファベット,"あ","a")」]
フィールド設定[「アルファベット」,「Substitute(アルファベット,"い","i")」]
フィールド設定[「アルファベット」,「Substitute(アルファベット,"う","u")」]
フィールド設定[「アルファベット」,「Substitute(アルファベット,"え","e")」]
フィールド設定[「アルファベット」,「Substitute(アルファベット,"お","o")」]

フィールド設定[「アルファベット」,「Substitute(アルファベット,"ん","n")」]

というのはどうでしょうか?
この場合、濁音や半濁音を先に置換する必要があります。

ただし、あまりスマートな方法ではないのでお勧めはできません。
    • good
    • 0
この回答へのお礼

日本語のよみをローマ字に変換するような関数、ありそうでないのに納得がいかなかったのです。スマートかそうでないかは私にはわかりませんが、確実な方法です。キー入力のとおりを値にする関数(?)とかないものかと探していましたが、これで事足ります。既存の関数をなんとか応用したり組み合わせたりするのが、この種の作業の最も難しいところですね。本当にありがとうございました。・・・後は、指定の桁数内で文字をシャッフルしてパスワードにすることですが・・・。

お礼日時:2003/03/09 03:44

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