2009-05-27 5 views
0

J'ai 3 tables et je dois sélectionner quelques recoreds, Dans 2 table d'entre eux j'ai des fichiers avec le même nom, et quand j'essaie d'utiliser Where Expression sur ces fichiers, j'ai un message d'erreur: If J'utilise TABLENAMe.Columns.COLNAME ce message d'erreur montre: Nom de colonne ambigu "FKLoginID". et si je l'utilise TableNAme.COLColumn.QualifiedName, il a créé une erreur près paramter "@ [dbo]. [Tbl_PersonalInformation]. [FKLoginID] 0"SubSonic Inner join Sélectionnez le problème

Comment puis-je interroger sur ces tables? Merci

SqlQuery q = new Select().From(Tables.TblStockbrokerBroadDirector) 
       .InnerJoin(TblPersonalInformation.PersonalInfoIDColumn, TblStockbrokerBroadDirector.FKPersonalInfoIDColumn) 
       .InnerJoin(TblCompanyInformation.BizInfoIDColumn, TblStockbrokerBroadDirector.FKBizInfoIDColumn) 
       .Where(TblPersonalInformation.FKLoginIDColumn.QualifiedName).IsEqualTo(User.Identity.Name); 

CREATE TABLE [dbo].[Tbl_CompanyInformation](
    [Code] [bigint] IDENTITY(111111111,1) NOT NULL, 
    [BizInfoID] [nvarchar](20) NOT NULL, 
    [BizName] [nvarchar](50) NOT NULL, 
    [RegisterationNO] [nvarchar](50) NOT NULL, 
    [RegisterationPlace] [bigint] NOT NULL, 
    [TypeBiz] [nvarchar](50) NOT NULL, 
    [DirectManagerCode] [nvarchar](20) NOT NULL, 
    [FKAddressID] [nvarchar](20) NOT NULL, 
    [FKLoginID] [nvarchar](20) NOT NULL, 
    [SabtDate] [nvarchar](50) NOT NULL, 
    [NewName] [nvarchar](50) NULL, 
    [OldName] [nvarchar](50) NULL, 
    [DateTasisAgahi] [nvarchar](50) NOT NULL, 
    [NOTasisAgahi] [nvarchar](20) NOT NULL, 
    [NOAsasname] [nvarchar](20) NOT NULL, 
    [FKStatus] [smallint] NOT NULL CONSTRAINT [DF_Tbl_CompanyInformation_FKStatus] DEFAULT ((0)), 
CONSTRAINT [PK_Tbl_CompanyInformation_1] PRIMARY KEY CLUSTERED 
(
    [Code] ASC 
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY], 
CONSTRAINT [IX_Tbl_Biz] UNIQUE NONCLUSTERED 
(
    [BizInfoID] ASC 
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY], 
CONSTRAINT [IX_Tbl_CompanyRegNoP] UNIQUE NONCLUSTERED 
(
    [RegisterationNO] ASC, 
    [RegisterationPlace] ASC 
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] 
) ON [PRIMARY] 

CREATE TABLE [dbo].[Tbl_PersonalInformation](
    [Code] [bigint] IDENTITY(111111111,1) NOT NULL, 
    [PersonalInfoID] [nvarchar](20) NOT NULL, 
    [FKLoginID] [nvarchar](20) NULL, 
    [FirstName] [nvarchar](50) NOT NULL, 
    [LastName] [nvarchar](150) NOT NULL, 
    [SSN] [nvarchar](10) NOT NULL, 
    [NationalCode] [nvarchar](10) NOT NULL, 
    [CopyNCard] [image] NULL, 
    [Birthyear] [nvarchar](50) NOT NULL, 
    [Birthplace] [bigint] NOT NULL, 
    [FKProvince] [smallint] NOT NULL, 
    [FKAddressID] [nvarchar](20) NOT NULL, 
    [Phone] [nvarchar](50) NULL, 
    [Sex] [bit] NOT NULL CONSTRAINT [DF_Tbl_PersonalInformation_Sex] DEFAULT ((0)), 
    [FKStatus] [smallint] NULL CONSTRAINT [DF_Tbl_PersonalInformation_FKStatus] DEFAULT ((0)), 
CONSTRAINT [PK_Tbl_PersonalInformation_1] PRIMARY KEY CLUSTERED 
(
    [Code] ASC 
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY], 
CONSTRAINT [IX_Tbl_PersonalInformation] UNIQUE NONCLUSTERED 
(
    [PersonalInfoID] ASC 
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] 
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] 


CREATE TABLE [dbo].[Tbl_Stockbroker_BroadDirector](
    [Code] [bigint] IDENTITY(111111111,1) NOT NULL, 
    [StockbrokerCode] [nvarchar](20) NOT NULL, 
    [FKBizInfoID] [nvarchar](20) NOT NULL, 
    [FKPersonalInfoID] [nvarchar](20) NULL, 
    [IsStockbroker] [bit] NOT NULL CONSTRAINT [DF_Tbl_Stockbroker_BroadDirector_IsStockbroker] DEFAULT ((0)), 
    [IsBoardDirector] [bit] NOT NULL CONSTRAINT [DF_Tbl_Stockbroker_BroadDirector_IsBoardDirector] DEFAULT ((0)), 
    [FKStatus] [smallint] NULL CONSTRAINT [DF_Tbl_Stockbroker_BroadDirector_status] DEFAULT ((0)), 
    [StockPercent] [float] NULL CONSTRAINT [DF_Tbl_Stockbroker_BroadDirector_StockPercent] DEFAULT ((0)), 
    [SahamdarHoghoghi] [bit] NULL, 
    [FkBizinfoIDSahamdar] [nvarchar](20) NULL, 
CONSTRAINT [PK_Tbl_Stockbroker_BroadDirector] PRIMARY KEY CLUSTERED 
(
    [Code] ASC 
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY], 
CONSTRAINT [IX_Tbl_Stockbroker_Code] UNIQUE NONCLUSTERED 
(
    [StockbrokerCode] ASC 
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] 
) ON [PRIMARY] 

Répondre

0

Merci pour votre réponse, mais je suis arrivé yor le code ce message d'erreur

Object reference not set to an instance of an object. 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.NullReferenceException: Object reference not set to an instance of an object. 

Source Error: 


Line 33:    .InnerJoin(TblCompanyInformation.BizInfoIDColumn, TblStockbrokerBroadDirector.FKBizInfoIDColumn) 
Line 34:    .Where(TblPersonalInformation.FKLoginIDColumn).IsEqualTo(User.Identity.Name); 
Line 35:   Response.Write(q.BuildSqlStatement()); 
Line 36:    q.ExecuteDataSet(); 
Line 37:   } 


Source File: E:\MehdiBackup\Visual Studio 2008\Projects\EXtjsUI\EXtjsUI\testi\default.aspx.cs Line: 35 

Stack Trace: 


[NullReferenceException: Object reference not set to an instance of an object.] 
    SubSonic.ANSISqlGenerator.BuildConstraintSQL(String& constraintOperator, StringBuilder sb, Boolean isFirst, Boolean& expressionIsOpen, Constraint c) +129 
    SubSonic.ANSISqlGenerator.GenerateWhere() +218 
    SubSonic.ANSISqlGenerator.BuildSelectStatement() +124 
    SubSonic.SqlQuery.BuildSqlStatement() +71 
    IMPermit.testi._default.Page_Load(Object sender, EventArgs e) in E:\MehdiBackup\Visual Studio 2008\Projects\EXtjsUI\EXtjsUI\testi\default.aspx.cs:35 
    System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +15 
    System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +33 
    System.Web.UI.Control.OnLoad(EventArgs e) +99 
    System.Web.UI.Control.LoadRecursive() +47 
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1436 
+0

Avez-vous essayé la requête que j'affichée? –

+0

Adam, je vérifie votre requête, sqlquery requête = DB.Select(). De (Tables.TblStockbrokerBroadDirector) .InnerJoin (Tables.TblPersonalInformation) .InnerJoin (Tables.TblCompanyInformation) .Lorsque (TblPersonalInformation.FKLoginIDColumn) .IsEqualTo (User.Identity.Name); Mais j'ai toujours la référence d'objet non définie sur une instance d'un objet. – Ashian

+0

N'utilisez pas TblPersonalInformation.FKLoginIDColumn, utilisez TblPersonalInformation.Columns.FKLoginID –

0

Les éléments suivants doivent travailler:

SqlQuery query = DB.Select().From(Tables.TblStockbrokerBroadDirector) 
    .InnerJoin(TblPersonalInformation) 
    .InnerJoin(TblCompanyInformation) 
    .Where(TblPersonalInformation.Columns.FKLoginIDColumn).IsEqualTo(User.Identity.Name); 
0

Changer

.Where(TblPersonalInformation.FKLoginIDColumn.QualifiedName).IsEqualTo(User.Identity.Name); 

à

.Where(TblPersonalInformation.FKLoginIDColumn).IsEqualTo(User.Identity.Name); 

Lorsque vous appelez .QualifiedName que vous appelez par inadvertance Où (chaîne co lumnName) au lieu de Where (colonne TableColumn).

Vous pouvez vérifier cela en vérifiant la valeur de q.BuildSqlStatement(). C'est très utile pour le débogage.