玄関へお回り下さい。 前のログ 次のログ

No.5050 二つのVSFlexGridを連動させる  投稿者:kumori [02/6/19(水)18:34分]

二つのVSFlexGridを連動させることはできますか?

例えば、フォームにVSFlexGrid1とVSFlexGrid2を貼り付けて、
VSFlexGrid1のスクロールを右へ動かすとVSFlexGrid2も右へ動くような作業がしたいのですが、
可能でしょうか?

よろしくお願いします。

VB6.0のSP5で開発しています。
PCはWindows2000です。
VSFlexGridのバージョンは6.0です。

No.5049 Re: SQLによるレコード数の取得  投稿者:とろ [02/6/19(水)17:30分]

> ADO のRecordcountで正しい値が取得できなかったので

> SQLでmdbファイルのレコード数を取得しようと思っているのですが
> どうしたらよいかわかりません
> dim a as string
> a = "select count (*) from テーブル名"
> だけではダメなんでしょうか?

いや、クエリは問題ないですよ。別の何かに問題があるのでは?

例えば、前のトランザクションの件と合わせると、
CommitTrans をする前に select count(*) クエリを発行している場合と、
CommitTrans をした後にクエリを発行している場合があるとか...

No.5048 SQLによるレコード数の取得  投稿者:ゆずマン [02/6/19(水)16:57分]

ADO のRecordcountで正しい値が取得できなかったので

SQLでmdbファイルのレコード数を取得しようと思っているのですが
どうしたらよいかわかりません

dim a as string
a = "select count (*) from テーブル名"

だけではダメなんでしょうか?
よろしくお願いします。


No.5047 エクセルの編集モードをコマンドモードに。  投稿者:momizi [02/6/19(水)15:33分]

エクセルの編集モードをコマンドモードにVBでやりたいのですが・・・

どうすればいいのでしょうか?

・・・わかりません。
皆さん、教えてください。
お願いします。

No.5046 ADOのRecordcount  投稿者:ゆずマン [02/6/19(水)14:55分]

ADOでアクセスに接続してデータの編集をしてるのですが

SQLによるインサート、デリート時にレコードカウントが正しくとれていないのです
普通に何もしなければレコードは正しくとれるのですが
インサートとかをしてレコード数に変更があったときに正しく取れなかったりします。
しかし、これが完全にレコード数がおかしいわけではなく、正しいレコードが取得できたり
できなかったりなのです。
原因不明で困っています。
だれかわかる方がいましたらよろしくお願いします。

No.5045 RE:MSFlexGrid    投稿者:A221 [02/6/19(水)13:43分]

表示するだけならばDATAコントロールを非表示で貼り付けて

.Datasource プロパティでデータソースを設定してみては?

はじめからDataGridを採用するのも手ではないかと思います。

No.5044 RE:MSFlexGrid  投稿者:ゆずマン [02/6/19(水)13:22分]

textMatrixを使えばよいのではないでしょうか?

事前にグリッドのほうの行数と列数を取得して

for i = 0 to 列の最後
With MSFlexGrid1
.TextMatrix(0, i) = レコードセットの変数.Fields(i).Name
End With
Next i

これでテーブルのフィールド部分は取得できると思います。
後はレコードの部分をループをネストさせれば表示できると思います。
間違ってたらごめんなさい

  i:ループカウンター
  rowNum:行のループカウンター
colNum:列のループカウンター
  recset:レコードセット

i = 0
rowNum = 1
Do While i < レコードセットの行数
colNum = 0
Do While colNum < レコードセットの列数
With MSFlexGrid1
.TextMatrix(rowNum, colNum) = recset.Fields(colNum).Value
colNum = colNum + 1
End With
Loop
i = i + 1
rowNum = rowNum + 1
recset.MoveNext
Loop

No.5043 MSFlexGrid  投稿者:冬也 [02/6/19(水)9:45分]

MSFlexGridにAccessのデータベーステーブルから簡単に取り込むことは出来ないのでしょうか?

Accessのテーブルのデータを通常どおり読み込んで配列などに代入し、
MSFlexGridにひとつづつ値を入れていくしか方法はありませんか?
 
上記の方法でやってみますが、もっと効率のよい方法があれば教えてください。
よろしくお願いします。
 

No.5042 RE:質問です  投稿者:花ちゃん [02/6/18(火)23:39分]

左のフレームの[MSFlexGrid関係]の [その他小技集]の

中に [セルを1行全体に選択反転表示する]があったと思うのですが
ご覧になられましたか?

又、投稿される場合注意事項を読んでくださいね!



No.5041 Re:Msgboxについて教えてください  投稿者:のぶ [02/6/18(火)23:12分]

とろさん どうもありがとうございました。

早速ソース見てみました。
VB初心者の僕には読解が難しかったですが、
こんなコーディングの方法があるんだと
勉強になりました


No.5040 質問です  投稿者:マサコ [02/6/18(火)20:20分]

はじめまして、マサコと申します。

MSFlexGridに関してわからないことがあります。
誰かぜひ、教えていただけないでしょうか。

MSFlexGridで1行だけ反転表示(アクティブ)させたい場合、
どのように設定すればよいのでしょうか?

No.5039 Re:プロパティが反映されません・・・。  投稿者:緋色流星 [02/6/18(火)17:51分]

Googleにて、"StartUpPosition バグ"で検索した結果


SDI開発環境時にフォームを移動した場合、StartUpPositionが
"手動"に変更されるバグがあるみたいです。

No.5038 皆さん、教えてください。  投稿者:橘 誠一 [02/6/18(火)14:30分]

皆さん、はじめまして。

橘です。
VBのプログラミングでMDIフォームにTOOLBAR(COOLBAR)を
設置し、フラットボタンを貼り付けて動かしているのですが
そのフラットボタンが乗っているTOOLBAR(COOLBAR)自体を
マウスでドラッグ・アンド・ドロップした時にMDIフォームから離れる
ようにしたいのですが、どうすればよいのでしょうか?


エクセルでフラットボタンの乗っているTOOLBAR(?)を
マウスでドラッグ・アンド・ドロップした時に独立フォームになって
切り離されますよね。まさに、あの動きを実現したいのですが・・・
皆様、よろいしくお願いいたします。


No.5037 RE:プロパティが反映されません  投稿者:花ちゃん [02/6/18(火)13:52分]

気になって少し調べて見ましたが、解像度は直接関係ないようです。

よく確認もせず回答してしまい、すみませんでした。

ただ、元々低い解像度のマシンで解像度を変更して使用すると
表示しきれないので右下に表示されるように見える場合がありますが
それでも、一応画面の中央に表示されているのですが。



No.5036 Re^2:プロパティが反映されません(御礼)  投稿者:ゆうや [02/6/18(火)13:20分]

緋色流星 さん>

お返事ありがとうございました。教えてもらったHPアドレスを参考にします。
ありがとうございました。

花ちゃんさん>
お返事ありがとうございます。解像度ですか。それは気づきませんでした。
自分のパソコンでも解像度を変えたらどうなるかとか、いろいろやってみます。
ありがとうございました。

No.5035 Re:プロパティが反映されません・・・。  投稿者:緋色流星 [02/6/18(火)11:50分]

Alignment プロパティについては、ここを参照してください。

http://www.microsoft.com/mscorp/worldwide/japan/support/kb/articles/j045/9/66.htm

No.5034 Re:Msgboxについて教えてください  投稿者:とろ [02/6/18(火)11:48分]

> ありません。

> 必要なら自作してください。

メッセージボックスを自作するならば、

Visual Basic プログラミングのヒント
http://www.netlaputa.ne.jp/~stadt/vb/index.html

独自ボタン付きメッセージボックス
が参考になると思います。

No.5033 RE:プロパティが反映されません  投稿者:花ちゃん [02/6/18(火)11:36分]

多分、開発環境と使用環境とで画面の解像度が違うからではないでしょうか?


1024×768 : 800 × 600 のように

No.5032 Re:Msgboxについて教えてください    投稿者:Say [02/6/18(火)10:46分]

ありません。

必要なら自作してください。

ちなみに、「はい」「いいえ」を
「Yes」「No」にかえたい、とかいうのなら
英語OSを使う、というてもあります。

No.5031 Re: レコードセットのフィールド  投稿者:とろ [02/6/18(火)10:42分]

> エラーコード-2147217833指定されたデータ量がフィールド サイズを超えています。

> データ量を減らし、挿入または貼り付けを行ってください。
>
> というエラーが出てしまうので、レコードセットのサイズを設定したいのですが、
> どのように設定してよいかわかりません

メッセージの通り、フィールドにセットするサイズを短くするしかありません。
データベースの方を変更できるならば、
データベースのフィールドのサイズを長くして下さい。

No.5030 レコードセットのフィールド  投稿者:ゆずマン [02/6/18(火)10:27分]

ADOのレコードセットでフィールドのデータのサイズを

設定するにはどのようにしたら良いのでしょうか?

今、レコードセットにデータを入力すると

エラーコード-2147217833指定されたデータ量がフィールド サイズを超えています。
データ量を減らし、挿入または貼り付けを行ってください。


というエラーが出てしまうので、レコードセットのサイズを設定したいのですが、
どのように設定してよいかわかりません
わかる方がいましたらよろしくおねがいいたします

No.5029 Re: パス  投稿者:とろ [02/6/18(火)9:53分]

恐らく、DSN や ODBC のことを言っていると思うのですが、

違っていたら聞き流して下さい。

"コントロールパネル" の "データソース(ODBC)" で、
'Microsoft Access Driver' を選び、 mdb ファイルを指定し、
'DSN_Sample' という名前で追加します。

そうすれば、
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\xyz\Sample.mdb"
のようにしていたものを
cn.Open "DSN=DSN_Sample;"
と指定するだけで済みます。
但し、 mdb の位置が固定でない場合は、個々に DSN を作成する必要があり、
あまり有効ではありません。

ただそれだけで、どっちを使っても、あまり違いはないと思いますよ。

No.5028 パス  投稿者:たくぼん [02/6/18(火)9:23分]

今、ADOでアクセスに接続してるんですが

ファイルの指定のところでフルパスで指定しているのですが、
DNS(?)とかを使うとコードの直接フルパスを書かなくていいらしいのですが
どういうことなのかわかりません・・・
わかる方がいましたらよろしくお願いいたします。

No.5027 プロパティが反映されません・・・。  投稿者:ゆうや [02/6/18(火)9:05分]

こんにちは。わからないことがあるので投稿してみました。

Win98 Second Edition でVB6.0 SP5を使ってアプリケーションを作っています。
先日、ディストリビューションウィザードを使ってパッケージを作り、Win95のノートパソコンに
インストールして動くかどうかのテストをしてみました。
動作的には問題ないのですが、テキストボックスのプロパティ「Alignment」の2(中央揃え)や、
スタートフォームのプロパティ「StartUpPosition」の2(画面の中央)がどうも反映されませんでした。
具体的には、テキストボックスは左揃えにされていて、フォームの表示は中央に表示されません。
(画面右下のほうになります)

なにか原因があるのでしょうか。それとも、もともとこういうものなのでしょうか。
どなたかご存知の方、教えてください。宜しくお願いします。

No.5026 Msgboxについて教えてください  投稿者:のぶ [02/6/17(月)19:25分]

MSGBOXは、ボタンが はい いいえ キャンセル 再実行 などボタンの種類が

決まってますが、このボタンの表示を任意の文字に変える方法はないんでしょうか?
APIかなにかで、ありそうな気がするのですが、どなたか知っている方いたら教えて下さい。

No.5025 ADOのトランザクション2  投稿者:ゆずマン [02/6/17(月)14:15分]

とろさんありがとうございました。無事にトランザクションできました。

それで、もうひとつ問題が発生してしまいました。
insert,delete,update時のデータ表示の制度がすごく低くなってしまいました。
SQLはただしく動いているのですが、なぜかデータの表示がちゃんと表示されるたり
2回インサートをしないと

表示されなかったりします。
かなり原因不明で混乱しています。
よろしくお願いします。

************************************************************************
インサートのイベントです

Private Sub Command1_Click()
'新規登録

Dim recset As New ADODB.Recordset
Dim Rowcount As Integer 'レコードの数を取得する為の変数
Dim Colcount As Integer 'カラム数を取得する変数
Dim gstSql As String '新規登録用SQL

'1つでもNull値を入力させない
If Trim(TexID.Text) = "" Then
MsgBox "全ての項目に文字を入力してください"
Exit Sub
ElseIf Trim(TexName.Text) = "" Then
MsgBox "全ての項目に文字を入力してください"
Exit Sub
ElseIf Trim(TexPass.Text) = "" Then
MsgBox "全ての項目に文字を入力してください"
Exit Sub
ElseIf Trim(TexLevel.Text) = "" Then
MsgBox "全ての項目に文字を入力してください"
Exit Sub
ElseIf Trim(TexOffice.Text) = "" Then
MsgBox "全ての項目に文字を入力してください"
Exit Sub
End If

'テキストボックスの値をDBにインサートする
''追加用SQL
gstSql = "insert into dbo_TBLUSER "
gstSql = gstSql & "values('" & Trim(TexID.Text) & "','" & Trim(TexName.Text) & "','"
gstSql = gstSql & Trim(TexPass.Text) & "', '" & Trim(TexLevel.Text)
gstSql = gstSql & "', '" & Trim(TexOffice.Text) & "')"

'トランザクションの結果
Select Case DB_Transaction(gstSql)

Case G_OK
MsgBox "正常に追加されました", vbOKOnly, "追加"
Case G_NG1
MsgBox "トランザクション開始でエラーが発生しました。処理を中止します。", _ vbExclamation, "エラー"
Exit Sub
Case G_NG2
MsgBox "インサート時にエラーが発生しました。処理を中止します。", vbExclamation, "エラー"
Exit Sub
Case G_NG3
MsgBox "Commit時にエラーが発生しました。処理を中止します。", vbExclamation, "エラー"
Exit Sub
End Select

'変更後のDBをリロードする

'ADOでレコードセットを開く
recset.Open "Select * from dbo_TBLUSER", dbs, adOpenKeyset, adLockPessimistic

Colcount = recset.Fields.Count 'レコードセットの列の数を調べる
Rowcount = recset.RecordCount '行の数を取得する

Call TBL_Open(recset, Colcount, Rowcount)

'フォーカスをテキストボックスへ
TexID.SetFocus

End Sub
************************************************************************************
トランザクションのイベントです

Public Function DB_Transaction(gstSql As String) As Integer

'初期値を設定する
DB_Transaction = G_OK

On Error GoTo Err_Begin
'DBのオープンに対するトランザクションの開始
Dim dbs As New ADODB.Connection
'DBのオープン(ADO)
dbs.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Documents " & _ "and Settings\\abe\\デスクトップ\\CameraDB.mdb;"
dbs.BeginTrans
On Error GoTo 0

On Error GoTo Err_execute
'追加、更新、削除に対するトランザクションの開始
dbs.Execute gstSql
On Error GoTo 0

On Error GoTo Err_Commit
'コミットに対するトランザクションの開始
dbs.CommitTrans
On Error GoTo 0
Exit Function

Err_Begin:

dbs.RollbackTrans
DB_Transaction = G_NG1
Debug.Print "エラーコード" & Err.Number & Err.Description
Exit Function

Err_execute:

dbs.RollbackTrans
DB_Transaction = G_NG2
Debug.Print "エラーコード" & Err.Number & Err.Description
Exit Function

Err_Commit:

dbs.RollbackTrans
DB_Transaction = G_NG3
Debug.Print "エラーコード" & Err.Number & Err.Description
Exit Function

End Function
******************************************************************************
グリッドにデータを表示させるイベントです

Private Sub TBL_Open(recset As ADODB.Recordset, Colcount As Integer, Rowcount As Integer)
'グリッドにデータを表示する関数

'グリッドの初期設定
With MSFlexGrid1
.Cols = Colcount
.Rows = Rowcount + 1
.SelectionMode = flexSelectionByRow
End With

'フィールドをセット
rowNum = 0
colNum = 0
For i = 0 To Colcount - 1
With MSFlexGrid1
.TextMatrix(rowNum, colNum) = recset.Fields(colNum).Name 'グリッドの列に配列を入れる
.ColWidth(colNum) = 1500
End With
colNum = colNum + 1
Next i

'レコードセットのデータをレコードに表示
rowNum = 1

Do While Not recset.EOF And rowNum < Rowcount + 1 '見出し部分を加えてカウントさせる
colNum = 0 'カウンターの初期化
Do While colNum < Colcount '列の数とレコードセットの比較
With MSFlexGrid1
.TextMatrix(rowNum, colNum) = recset.Fields(colNum).Value
colNum = colNum + 1 '配列のカラムを1移動
End With
Loop
rowNum = rowNum + 1 '配列のレコード1行移動
recset.MoveNext 'レコードセットの改行
Loop

recset.Close

'テキストボックスの初期化
TexID.Text = ""
TexName.Text = ""
TexPass.Text = ""
TexLevel.Text = ""
TexOffice.Text = ""

End Sub

No.5024 Re: ADOのトランザクションについて  投稿者:とろ [02/6/17(月)11:15分]

まず、一つ。

dbFailOnError は DAO で定義されている定数なので、使用できない
っていうか、使用すると予期しない結果になる可能性がありますよ。

で、本題ですが、
エラーが発生している場所って、下の RollbackTrans
のステートメントだと思われます。

Err_Begin:
dbs.RollbackTrans

単純に考えて、エラーがひとつも発生しなかった場合に通る処理の順序は以下の通りです。
(コメント、ラベル、 On Error ... は除いてあります。)

DB_Transaction = G_OK
dbs.BeginTrans
dbs.Execute gstSql, dbFailOnError
dbs.CommitTrans
dbs.RollbackTrans ' ※
DB_Transaction = G_NG1
Debug.Print "エラーコード" & Err.Number & Err.Description

※の部分で、 RollbackTrans に対する BeginTrans がありません。
BeginTrans で開いたトランザクションは、
直前の CommitTrans で閉じてしまっています。

No.5023 ADOのトランザクションについて  投稿者:ゆずマン [02/6/17(月)10:28分]

ADOでトランザクション処理を行おうとしているのですが、


実行時エラー'3704'
オブジェクトが閉じてる間は操作できません

というエラーになるのですが
どういうことかわかりません。
わかる方がいらっしゃいましたらよろしくお願いします。

********************************************************************
Public Function DB_Transaction(gstSql As String) As Integer

'初期値を設定する
DB_Transaction = G_OK

On Error GoTo Err_Begin
'トランザクションの開始
Dim dbs As New ADODB.Connection
Dim recset As New ADODB.Recordset
dbs.BeginTrans
On Error GoTo 0

On Error GoTo Err_execute
'追加、更新、削除に対するトランザクションの開始
dbs.Execute gstSql, dbFailOnError
On Error GoTo 0

On Error GoTo Err_Commit
'コミットに対するトランザクションの開始
dbs.CommitTrans
On Error GoTo 0

Err_Begin:

dbs.RollbackTrans
DB_Transaction = G_NG1
Debug.Print "エラーコード" & Err.Number & Err.Description
Exit Function

Err_execute:

dbs.RollbackTrans
DB_Transaction = G_NG2
Debug.Print "エラーコード" & Err.Number & Err.Description
Exit Function

Err_Commit:

dbs.RollbackTrans
DB_Transaction = G_NG3
Debug.Print "エラーコード" & Err.Number & Err.Description
Exit Function

End Function

No.5022 Re:コンボボックスのリストの高さを変更  投稿者:花ちゃん [02/6/16(日)23:38分]


とろさんが回答されてますので、解決されているかも知れませんが?

サンプルを [その他のコントロール関係]のところに

[コンボボックスのドロップダウンリスト項目数を変更する] でUPしておきました。




No.5021 re:情けないですが。 (SQL)  投稿者:A221 [02/6/16(日)21:32分]

とりあえず、管理人の「花ちゃん」さんの代弁をしておきます。


>メッセージの入力画面にこのような注意事項があったと思うのですが?
>   簡潔に(25文字程度内)内容を表すもので記入願います。
>   ※ 最近重複書き込みが目立ちます。下記注意事項をお守り下さい。

では本題に。

>  sSQL = "SELECT CODE,photo,name & kana "
> sSQL = sSQL & "FROM master "
> sSQL = sSQL & "ORDER BY KANA"
> adoRS.Open sSQL, adoCNN, adOpenKeyset, adLockOptimistic

ここまでのところで、SQLで取り出したレコードセットの形は
CODE Photo Name&kana
--------------------------------------
1234 xxxxx xxxxxyyyy

と、このようになっていますが、SQLで別名をつけてはいませんから、
> USER(i) = adoRS.Fields("name & kana") ←ここでエラーがでます。
ここを
USER(i) = adoRS(2) 'フィールドは0が始まり
とするか、あるいは
sSQL = "SELECT CODE,photo,name & kana As Expr1 FROM master ORDER BY expr1"
としておき
USER(i) = adoRS.Fields("Expr1") 'Expr1は任意の名前です。
としてみればうまくいくはずです。

こだわらなければSelect * from Master order by kanaでとりだして、配列に入れる部分で
User(i)=rs(1) & rs(2)
でもいいですね。

No.5020 情けないですが。  投稿者:Void [02/6/16(日)20:57分]

とろさん返信ありがとうございました。

大変勉強になりました。

「||」はSQLの初級向けの本に文字結合演算子と出ていたので
間違いないと思って使ってました。
もしかしたらSQL*Plusの命令なのかもしれません(不明)

例)こんな使い方でした
Select '私の名前は' || 姓 || 名 || 'です。' "氏名" from 名前;

結果
   名前
   −−−−−−−−−−−−−−−−
   私の名前は山田太郎です。

フィールド名:姓,名
テーブル名:名前

間違いを教えたいただけたのでそれはいいのですが
その続きで詰まっています。

  sSQL = "SELECT CODE,photo,name & kana "
sSQL = sSQL & "FROM master "
sSQL = sSQL & "ORDER BY KANA"

adoRS.Open sSQL, adoCNN, adOpenKeyset, adLockOptimistic

i = 0
If adoRS.RecordCount > 0 Then
Do Until adoRS.EOF
i = i + 1
USER(i) = adoRS.Fields("name & kana") ←ここでエラーがでます。
adoRS.MoveNext
Loop
End If

結合したフィールドのデータを取り出すときのフィールド名はどのようにすればいいのでしょうか
いろいろ試したのですがだめでした
Fieldsプロパティでは結合したフィールドはとりだせないのでしょうか?
それともフィールド名に別名をつけないといけないのでしょうか?
仮に別名をつけるとしても別名は"(ダブルクオート)で囲まなくてはならないんですよね?
それをどのようにVB上で表現すればいいのでしょうか

ずうずうしいのはわかっておりますが
なにとぞ皆様よろしくお願い致します。

長文・乱文失礼しました。


No.5019 Re: フィールドを結合したSQLの発行について  投稿者:とろ [02/6/16(日)14:30分]

> NAME || KANA


なんで縦棒が出てきたのか分かりませんが...

NAME, KANA が共にテキスト型ならば、
NAME + KANA もしくは NAME & KANA で大丈夫です。

No.5018 Re: コンボボックスのリストの高さを変更  投稿者:とろ [02/6/16(日)14:30分]

SetWindowPosAPI や MoveWindowAPI を使って

コンボボックスの高さを設定すれば、
リストの高さ(リストの1画面分に表示させる項目数)
を変更することができます。

# VB での Height プロパティや Move メソッドでは設定できません。

No.5017 Re: SQLについて、教えて下さい  投稿者:とろ [02/6/16(日)14:30分]

> data_chk=rs.Open select count(*) from worktbl where NO as long ←ココ


ここで何をしたいのか分かりませんが...
DAO.Recordset に Open メソッドはありませんし、
as long って何で付いているのか分かりません。

> あるテーブルの件数を取得しようとしていますが、
テーブルの全レコード数ならば、 where 句は必要ないですよ。
Dim lRecordCount As Long
Set rs = db.OpenRecordset("select count(*) from " & worktbl, dbOpenDynaset)
lRecordCount = rs(0)
で良いのでは?

No.5016 フィールドを結合したSQLの発行について  投稿者:Void [02/6/16(日)13:02分]

続けてすみません

すごく単純なはずなのですが
ADOを使ってAccessデータベースからフィールドを結合して
取り出したいのですが
「垂直バーの使い方が不正です。」とエラーが出てしまいます。
SQLの本をみてもこれ以外に方法がないと思うのですが
どこが悪いのでしょうかご指摘くださいお願い致します。
サンプル)
 sSQL = "SELECT NAME || KANA "
sSQL = sSQL & "FROM master "

  テーブル:master
  フィールド:NAME,KANA


No.5015 コンボボックスのリストの高さを変更  投稿者:Viod [02/6/16(日)12:35分]

初心者の質問でもうしわけないのですが

コンボボックスの下向き三角を押して表示される
リストの数を調節できるのでしょうか?
調節できるのなら教えてくださいお願いします。

例)30個のリストがあって下向き三角を押したとき
6個までが表示され残りがスクロールバーを動かさないと
見えない状態になってるとして
それを12個まで表示させて残りがスクロールバーを動かすとみえる
ような設定のことです。

国語力がなくてもうしわけありません
よろしくお願い致します。

No.5014 SQLについて、教えて下さい  投稿者:3日目 [02/6/15(土)15:11分]


超初心者です。

過去ログ等を見ては、感心している毎日です。
しかし、過去ログを見ても、SQLのところがどうしてもわかりません。
私の環境はWIN2000PRO・VB6.SP5で、データベースはDAOを使用しています。

あるテーブルの件数を取得しようとしていますが、
   chk = rs.RecordCount
では、正しい件数を取得できませんでした。
勿論、データベースを最適化しても、無意味でした。
そこで、下記のようなソースを作成しようとしているのですが、
肝心のSQLの記述の仕方がわからないのです。

Function data_chk(daomdb, worktbl) As Long
Dim ws As DAO.Workspace
Dim db As DAO.Database
Dim rs As DAO.Recordset

' デフォルトのワークスペースの定義
Set ws = DBEngine.Workspaces(0)

' データベースを開く
Set db = ws.OpenDatabase(daomdb)

' テーブル名を指定してレコードセットを作成する
Set rs = db.OpenRecordset(worktbl, dbOpenDynaset)

data_chk=rs.Open select count(*) from worktbl where NO as long ←ココ
テーブル名⇒worktbl
フィールド⇒NO(数値です)

基本的に文法エラーなので、どのように記述してよいのかもわかりません。
お手数ですが、ご教示くださいますよう、宜しくお願いします。



No.5013 RE:VBのテキストデータをMSWordへの出力  投稿者:花ちゃん [02/6/15(土)11:27分]

何をしようとされているか今一解らないのですが?

VBのテキストボックスの内容をWordに表示させたいのなら

'選択範囲を文書の 4 行目に移動します。
Selection.GoTo What:=wdGoToLine, Which:=wdGoToAbsolute, Count:=4

'VBのテキストボックスの内容を書き込み
Selection.TypeText Text:=Text1.Text
'又は ActiveDocument.Characters.Last.Text = Text1.Text

これでも一応表示できます。

No.5012 re:SSTabの使い方  投稿者:アンパンマン [02/6/15(土)9:57分]

とろさん、いつもありがとうございます。


SSTabの中に直接グリッドを貼り付ければよかったのですね。

あまりに簡単すぎて、見落していました。m(__)m
(灯台下暗しでした。)

僕はてっきり、何かのプロパティで設定するものとばかり思っていました。
皆さんお騒がせして申し訳ありませんでした。

SSTabの使い方で何かいい使い方があれば教えて下さい。
また書き込みさせて下さい。

No.5011 ExcelのZoom表示の件  投稿者:花ちゃん [02/6/14(金)19:38分]

メッセージの入力画面にこのような注意事項があったと思うのですが?

   簡潔に(25文字程度内)内容を表すもので記入願います。
   ※ 最近重複書き込みが目立ちます。下記注意事項をお守り下さい。

Excel 等の質問があった時にいつも(今日も)書いているのですが
解らない場合一度マクロで記録して、そのマクロを参考にコードを書いて見ると
大抵は上手くいきます。
まず、自分でできる範囲は自分で試して見るようにするのが上達の早道かと思います。
その上で出来なければ(解らない部分)質問するとか
という事でマクロを取って見ました。

  xlApp.ActiveWindow.Zoom = 200



No.5010 皆さま、教えてください。  投稿者:SERA [02/6/14(金)18:07分]

皆さん、はじめまして


ちょっと困った事がありまして
書き込みさせていただきました。

〜で、内容の方なのですが、

VBのプログラムよりエクセルの倍率を操作し、
自在に、倍率を操作する方法ってあるのか?
です。もし、知っている方がいらっしゃればぜひとも
教えてください。

よろしく、お願いいたします。


No.5009 Re: 標準EXE間の数字の受け渡しについて  投稿者:とろ [02/6/14(金)17:36分]

# 名前の変更を強要したみたいで、ごめんね。


> 標準EXEから標準EXEを立ち上げて、変数などの受け渡しをしたいのですが、

変数などっていう所が一番重要なのですが...

変数で直接やり取りはできません。
外部ファイルを介したり、
TextBox や Label などを介して行う必要があります。

私なら、 DDE を使います。調べてみて下さい。

No.5008 標準EXE間の数字の受け渡しについて  投稿者:お茶犬1号 [02/6/14(金)17:18分]

トロさん、どうもありがとうございました。(HN変えました)(;^_^A アセアセ・・・



標準EXEから標準EXEを立ち上げて、変数などの受け渡しをしたいのですが、

どうすればいいのでしょうか?

漠然とした質問ですみません。

No.5007 Re: modalで表示させたものについて  投稿者:(元祖)とろ [02/6/14(金)16:54分]

> 標準EXEからActiveXEXE内のクラスモジュールを突付き、をvbmodalでshowしたのですが、

> 元の標準EXEを触る方法はないでしょうか?
> モーダルで開いたものを閉じない限り、決して無理でしょうか?

恐らく無理だと思います。
ActiveX の方を vbModeless で Show した後に、
その Show したフォームが閉じるまで Loop するようにして、
あたかも vbModal で Show したようにするしかありません。

# 同じ名前はやめてね (^_^;

No.5006 modalで表示させたものについて  投稿者:とろ [02/6/14(金)16:40分]

標準EXEからActiveXEXE内のクラスモジュールを突付き、をvbmodalでshowしたのですが、

元の標準EXEを触る方法はないでしょうか?

モーダルで開いたものを閉じない限り、決して無理でしょうか?

よろしくお願いします。

No.5005 re:クラス  投稿者:A221 [02/6/14(金)15:32分]

>現在、DAOでAccessのmdbに対してSQLで追加、更新、削除などをしてるのですが、

>ただいまの接続はセッションが1本しか張られてなく、1人がDBを開いているときは
>ほかの人が使用できなくなってしまってます。
>ですので、セッションを複数もって1度に何人でもDBに接続できるようにしたいのです。
>それにはクラスモジュールを使うのが効率的だとは思うのですが、

返事が前後しますが、mdbだとネットワークから複数アクセスしたときに
データベース的なロックより先にファイルのロックがかかるので物理的に無理では?

No.5004 re:DAO→ADO  投稿者:A221 [02/6/14(金)15:18分]

>>Rowcount = recset.RecordCount

>>というように RecordCount でレコードセット内のレコードカウントを取得できたのですが
>>ADOにするとこのレコードの値がなぜか必ず-1で帰ってきます。

カーソルがクライアントにないのでは?
(.CursorLocation)

とろさんの言われるとおり、カウントを返させてもよいと思います。
Set Rs=Connenction.Execute("select count(*) from TABLE1 where ...")


No.5003 RE:VBのテキストデータをMSWordへの出力    投稿者:すぎ [02/6/14(金)15:16分]

「花ちゃん 」いろいろ有難うございます。

メニューのExcel・Word関係の「Wordを使って「宛て名ラベル」を印刷する。を
工夫してみます。
ただ、このサンプルだと、EXCELを介してWordへ出力していますが。
私が探しているのは、EXCELを介さないやり方を探していました。
なにかあればと思いまして投稿しました。


No.5002 Re: DAO→ADO  投稿者:とろ [02/6/14(金)11:45分]

> ADOにするとこのレコードの値がなぜか必ず-1で帰ってきます。

> どのようにすればADOでレコードセットのレコードカウント(行数)を取得できるのでしょう?

DAO でもオプションにより、 -1 が返ることがありますよ。
recset.MoveLast
recset.MoveFirst
Rowcount = recset.RecordCount
とすれば大丈夫ですが、それよりも、
select count(*) from TABLE1 where ...
のクエリを発行した方が確実ですよ。


No.5001 DAO→ADO  投稿者:ゆずマン [02/6/14(金)11:33分]


今、DAOをADOに変更しようとしているのですが。
DAOでは
Rowcount = recset.RecordCount
というように RecordCount でレコードセット内のレコードカウントを取得できたのですが
ADOにするとこのレコードの値がなぜか必ず-1で帰ってきます。
どのようにすればADOでレコードセットのレコードカウント(行数)を取得できるのでしょう?
わかる方がいらっしゃいましたらよろしくお願いいたします。

玄関へお回り下さい。 前のログ 次のログ


VBレスキュー(花ちゃん)
Visual Basic6.0  VB6.0