2016-07-11 14 views
0

私は次のようになります私はDatabase1をからデータを引っ張ってるselect文を持っている...SQL Server 2008の - 選択クエリOPEN ROWSET

g_SQL = "SELECT 'ID' = companyID, 'Name' = (CompanyName + CompanyAddress) 
g_SQL = " FROM tblCompanies WHERE CompanyStatus='InBusiness'" 

今、私は何をする必要があるか、別のデータベースに入っていますそして...

sum(inventory) for each CompanyID 

を私がする必要があるtblCompanyinventory、データベース2からのデータを選択して、私はそれがこの「名前」のように「名前」に表示させたい=(会社名+ CompanyAddress +和と思います(在庫))

IDとNAMEの2つのフィールドを使用し、コンボボックスローダーに渡します。これは私が取り組んでいるVB6アプリケーションです。

どうすればいいですか?行セットを開く?私はこれまでにこのようなことは何もしていません。

私は、Database1の場合はg_CN1、Database2の場合はADODB.Connectionとしてg_CN2を設定しています。これらのデータベースは同じサーバー上にあります。

+0

2つのデータベースが同じSQLインスタンス上にありますか?そうであれば、あなたの認証モデルはそれを許可します。次に、3つのパーツテーブル名を使用してクロスデータベースジョインを行うことができます。Database1.dbo.tblCompaniesから選択します。Database2.dbo.tblCompanyInventoryに参加します。 2つの異なるデータベースにありますか? – OldBoyCoder

+0

そうです。 Database2は、複数のアプリケーション(すべてが挿入される場所)のインベントリデータベースとして機能します。インベントリ/企業は頻繁に更新され、すべてのcompanyIDはアプリケーションでハードコードされているため、別のデータベースに移動しようとしているので、コードを更新する必要はなく、テーブルを更新するだけで必要な企業。 – BubbaSparxx

+0

データベース1のSQLおよび接続文字列にアクセスできないと言っていますか?同じVBファイルにはありませんか?あなたが探しているのはおそらくOpenRecordsetだが、既存のコードに既にあるはずだ。もしあなたがゼロから始めるのでなければ – dbmitch

答えて

0

OPのコメントに基づいて、このようなSQLが必要なものになることがあります。

g_SQL = "SELECT 'ID' = C.companyID, 'Name' = (CompanyName + CompanyAddress), I.InvSum " 
g_SQL = g_SQL + " FROM Database1.dbo.tblCompanies C JOIN (SELECT SUM(inventory) As InvSum from" 
g_SQL = g_SQL + " Database2.dbo.tblCompanyInventory GROUP BY CompanyId) I " 
g_SQL = g_SQL + " ON I.CompanyId = C.companyId WHERE CompanyStatus='InBusiness'" 

接続が確立されていることを知らずに、認証の問題があるかどうかはわかりません。

+0

にパスワードとユーザ名があるので、それらを含める必要があるだろう。私はオンラインで探していて、OPENROWSETでサーバ名、ドライバ、ユーザ名、パスワードを含むものを探しています。これが正しいかどうかわからない – BubbaSparxx

+0

データベースが同じSQLインスタンス上にある場合、SQLログインにはDatabase1とdatabase2の両方へのアクセス権が与えられ、単一の接続から実行できます。 – OldBoyCoder

関連する問題