現在ACCESSを使用し、TABLE(USERNAME,PASSWORD,ETC..)
を作成し、そしてVBでユーザーがログイン画面でユーザーネームとパスワードをタイプできるフォームを作りたいと思ってます。一応、VB のフォームでデータリンクを使い繋げた事は繋げたんですけど、その後のコーディングがさっぱりわかりません。だれかもしよかったら、助けてください。

A 回答 (1件)

RECORDsetオブジェクトは 作成してるんでしょうか?



出来てるのであればRECORDSETオブジェクトのSOURCEプロパティとactiveconnectionプロパティを
設定してください
あとは オープンするだけで 内容の読み書きができるようになります

例)
USERDBがMDB
USERTBLがテーブル
username・passwordが項目

dim cn as adodb.connection
dim rs as adodb.recordset

set cn = new adodb.connection
cn.connectionstring="provider=<使用するプロバイダ>;data source=<MDBのフルパス/userdb.mdb>
cn.open

set rs = new recordset
rs.sorce="usertbl"
rs.activeconnection=cn
rs.open

後は
rs!usernameで usernameのデータが
rs!passwordで passwordのデータが
取り出せます

取り急ぎ書きましたので 上記sampleが実際に動作するかどうか確認してません
スペルも確認してませんので(^^)笑

この回答への補足

早々のご返事有り難うございます。
今、一生懸命いわれた事をやってますので
分かり次第結果報告します。

補足日時:2001/09/05 00:28
    • good
    • 0

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

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

Q[VB.NET]3つ以上のフォームを一つずつ表示し、最後のフォームを閉じた時に最初のフォーム以外のフォームを閉じる

VB.NETを学んでいるのですが、現在3つ以上のフォームを表示していくものを作ろうとして躓いたことがあったのでこちらに書き込みました。
内容としては、ボタンを押して次のフォームを表示していくものです。

動作の流れは以下のように考えています(フォームはA、B、Cの3つとする)
1.Aを表示
2.Aでボタンを押してBを表示し、Aは隠す
3.Bでボタンを押してCを表示し、Bは隠す
4.Cでボタンを押してBとCを閉じ、隠していたAを表示

隠すのはHideを用いてできたのですが、4.でCのボタンでBとCを一緒に閉じてAを表示させる方法がわかりませんでした。

1~4のように動作させるにはどうすればいいか教えてください

Aベストアンサー

まとめて考えるのではなく、分けて考えた方がコーディングもしやすくなります。

[ FormA の処理 ]
1. ボタンを押したら FormB を開き、自身を Hide する。
2. FormB が閉じられたら、自身を Show する。

[ FormB の処理 ]
3. ボタンを押したら FormC を開き、自身を Hide する。
4. FormC が閉じられたら、自身を Close する。

[ FormC の処理 ]
5. ボタンを押したら、自身を Close する。

ポイントは、親フォーム側で子フォームのFormCloseを捕らえるところです。FormBからFormAを、とか、FormCからFormAとFormBを・・・と考えるとややこしくなります。上記のように処理すれば、FormBはFormAの動作を気にする必要はありませんし、FormCもFormBやFormAの動作を気にする必要はありません。子フォームのFormCloseはWithEvents宣言すれば捕らえられます。

以下、簡単なコードを。ボタン配置が面倒だったので、フォームのクリックで動作します。


' [ FormA の処理 ]
Public Class FormA
Inherits Form

Public Sub New()
Me.Text = "FormA"
End Sub

Private WithEvents frmFormB As FormB

' 1. ボタンを押したら FormB を開き、自身を Hide する。
Private Sub FormA_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Click
frmFormB = New FormB
frmFormB.Text = "FormB"
frmFormB.Show()

Me.Hide()
End Sub

' 2. FormB が閉じられたら、自身を Show する。
Private Sub frmFormB_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles frmFormB.FormClosed
frmFormB = Nothing
Me.Show()
End Sub

End Class

' [ FormB の処理 ]
Public Class FormB
Inherits Form

Private WithEvents frmFormC As FormC

' 3. ボタンを押したら FormC を開き、自身を Hide する。
Private Sub FormB_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Click
frmFormC = New FormC
frmFormC.Text = "FormC"
frmFormC.Show()

Me.Hide()
End Sub

' 4. FormC が閉じられたら、自身を Close する。
Private Sub frmFormC_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles frmFormC.FormClosed
frmFormC = Nothing
Me.Close()
End Sub

End Class

' [ FormC の処理 ]
Public Class FormC
Inherits Form

' 5. ボタンを押したら、自身を Close する。
Private Sub FormC_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Click
Me.Close()
End Sub

End Class

※VB2005で書いたコードなので.NETでそのまま動くかは不明・・・。

なお、あくまで考え方のひとつなので、他にも方法はあります。

まとめて考えるのではなく、分けて考えた方がコーディングもしやすくなります。

[ FormA の処理 ]
1. ボタンを押したら FormB を開き、自身を Hide する。
2. FormB が閉じられたら、自身を Show する。

[ FormB の処理 ]
3. ボタンを押したら FormC を開き、自身を Hide する。
4. FormC が閉じられたら、自身を Close する。

[ FormC の処理 ]
5. ボタンを押したら、自身を Close する。

ポイントは、親フォーム側で子フォームのFormCloseを捕らえるところです。FormBからFormAを、とか、FormC...続きを読む

QVB6変数の宣言dim j,k,p,m,n as Integerは良くない?

お世話になります。

VB暦1年です。

汎用の変数宣言でタイトルのように
dim j,k,p,m,n as Integer
dim ssa,ssb as String

など、カンマ区切りで変数宣言を使っていたのですが
最近、知人にasの手前の変数は型どおり宣言されるが
その手前の変数はVariant型で宣言されてしまうと指摘されました。

指摘されるまで気にはしていませんでしたが
ウォッチで確認すると変数に代入されるまでは
型がVariant/Emptyとなってます。

以後、気をつければいいのですが
過去にコーディングしたプログラムにも多少、使用していて客先に納品してしまっているものもあります。
後々、問題になるのかな?

Aベストアンサー

おっしゃる通り、カンマで区切る場合は、
Dim j As Integer, k As Integer, p As Integer
という風にすべてAsで型を明示しないと、
Variant型になってしまいます。
つまり、
Dim j
Dim k
Dim p As Integer
とわけて書いた場合と同じです。
(VB.NETは、
Dim j, k, p As Integer
で全部Integerになるようなので、ややこしいですね)

すでにご存知とも思いますが、一般的にVariant型を多用しているコードは、宣言を見ても、どういう種類の値を使うかわかりづらいですし、比較対象の型を誤るというようなバグの原因になりやすいので、型を明示できるような状況で敢えてVariant型を使うべきではないです。

しかし、すでに納品してしまったコードについては、問題はメモリを余計に使ってしまうことくらいではないでしょうか?
他の人が気づかなかったことから考えるに、多分狭いスコープで使っていますよね? 比較対象や代入するべき型を誤るというようなロジックの誤りがない限り、少なくとも動作上の問題は発生しないと思います。ただ、直せる機会があるのであれば、直した方がいいとは思いますが。

おっしゃる通り、カンマで区切る場合は、
Dim j As Integer, k As Integer, p As Integer
という風にすべてAsで型を明示しないと、
Variant型になってしまいます。
つまり、
Dim j
Dim k
Dim p As Integer
とわけて書いた場合と同じです。
(VB.NETは、
Dim j, k, p As Integer
で全部Integerになるようなので、ややこしいですね)

すでにご存知とも思いますが、一般的にVariant型を多用しているコードは、宣言を見ても、どういう種類の値を使うかわかりづらいですし、比較対象の型を誤るというよう...続きを読む

QVB2010でMDI親フォームから子フォームを表示

VB2010でソフトを作っております。
MDI親フォームから子フォームを表示させたいのですが…。
過去に少しだけVB6を使っていたことがありますが、クラスという概念に苦労しております
インスタンスや初期化といったところをうまく扱えばとは思うのですが、よろしくご指導お願いいたします。

1.MDI親フォーム(Form1)のボタンを押し、子フォーム(Form2)を表示させる
2.子フォームが表示されていなかったら表示させる
3.子フォームが表示されていたら何もしない

これだけの事ですがずいぶん悩んでおります。
全コードがこれです。

Public Class Form1
Private f2 As New Form2

Private Sub Form1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.IsMdiContainer = True
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim fChild As Form() = Me.MdiChildren
For Each f As Form In fChild
If f.Text = "Form2" Then
Exit Sub
End If
Next


f2 = New Form2
f2.MdiParent = Me
f2.Show()
f2.Activate()

End Sub


Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

If f2 Is Nothing OrElse f2.IsDisposed Then
f2 = New Form2
f2.MdiParent = Me
End If
f2.Show()
f2.Activate()

End Sub

End Class


ボタン1でもボタン2でも、期待する動作はするのですが、

ボタン1ではアクティブになっているフォームの名前を力技で取得している気がして…
ボタン2では子フォーム(Form2)をすでに表示している状態でもさらにShowをしているのが気に入らなくて…

もっとスマートな方法がありましたら、ご指導お願いします。

VB2010でソフトを作っております。
MDI親フォームから子フォームを表示させたいのですが…。
過去に少しだけVB6を使っていたことがありますが、クラスという概念に苦労しております
インスタンスや初期化といったところをうまく扱えばとは思うのですが、よろしくご指導お願いいたします。

1.MDI親フォーム(Form1)のボタンを押し、子フォーム(Form2)を表示させる
2.子フォームが表示されていなかったら表示させる
3.子フォームが表示されていたら何もしない

これだけの事ですがずいぶん悩んでおります。
全コード...続きを読む

Aベストアンサー

Private f2 As New Form2

Private f2 As Form2
にして

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

If f2 Is Nothing OrElse f2.IsDisposed Then
f2 = New Form2
f2.MdiParent = Me
f2.Show()
End If
f2.Activate()

End Sub

としてみては?

Q【VB6.0】 あるフォームから他のフォームへ値を受け渡したい

タイトルの通り、あるフォームから他のフォームに値の受け渡しを行いたいのですが、どのようにしたらよいのでしょうか??

以下のようなコードできんのかなぁ~~って、やったみだけど、
むりでした。。サンプルコード内でいうParamsのような値を
受け渡しさせたいのですが・・・。ご存知の方、申し訳ないですが
教えて頂けると非常にありがたいです。それと、、私はVB初心者です。

---FormA---
Public Params as new Params

Private sub Command1_Click()
Call Me.Hide
FormB.Show vbModeless, Me
End sub

---FormB---
Private Sub Form_Load()
'Owner.Paramsのような形で参照できるかと思ったができませんでした。

End sub

Aベストアンサー

こんにちは。

 下記サイトをご参照下さい。
  http://www005.upp.so-net.ne.jp/h-masuda/vb6/vb6first/forms040.html
   簡単に渡すには、グローバル変数を使えばよいと思います。
   別な方法では、FprmAにPrrams変数を参照するためのPublic関数を作り、FormBからその関数を呼び出して参照することも出来ると思います。

では。

QVBでフォームの中にフォームをおきたいんです

ExcelやWordなどで、親フォームの中に、文章やBOOKが子フォームとして複数表示して親フォーム内の範囲で移動したり、大きさを変えたりできますが、VB6.0でもこのようなフォームを作ることはできるのでしょうか?もし、できるのであれば作り方を知りたいのですがよろしくお願いします。

Aベストアンサー

SDIとMDIの違いの事を指されていると思います。
MDIというのは内部で複数のウィンドウを開くことのできるアプリケーション形式のことです。SDIは一つだけしかウィンドウが開かないアプリケーション形式のことです。
VB6.0の場合はたしか最初の方でどちらの形式のプログラムを作成するかを選択できたと思います。


人気Q&Aランキング

おすすめ情報