PDA

View Full Version : سوال: پركردن يكComboxبراساس چندستون



Iran58
جمعه 07 خرداد 1389, 07:24 صبح
سلام
يك جدول دارم كه شامل ستون هاي (شماره سند ،تعداد ماشين،شماره ماشين1،شماره ماشين2،شماره ماشين3،شماره ماشين4وشماره ماشين5)مي باشد
حال مي خواهم كليه شماره ماشينهارادريك Comboxپركنم
چه كدي بايدبنويسمسلام
يك جدول دارم كه شامل ستون هاي (شماره سند ،تعداد ماشين،شماره ماشين1،شماره ماشين2،شماره ماشين3،شماره ماشين4وشماره ماشين5)مي باشد
حال مي خواهم كليه شماره ماشينهارادريك Comboxپركنم
چه كدي بايدبنويسم

s.khoshfekran
جمعه 07 خرداد 1389, 08:44 صبح
Select MashinNo1 From table1
Union ALL
Select MashinNo2 From table1
UNION ALL
Select MashinNo3 From table1
UNION ALL
Select MashinNo4 From table1

ASKaffash
دوشنبه 24 خرداد 1389, 09:55 صبح
سلام
این معماری اشتباه است باید دو جدول شود ولی با این اوصاف :

برای این جدول :


CREATE TABLE [dbo].[MyTbl] (
[MyID] [int] NULL ,
[M1] [int] NULL ,
[M2] [int] NULL ,
[M3] [int] NULL ,
[M4] [int] NULL ,
[M5] [int] NULL
) ON [PRIMARY]

با Dynamic SQL و ترکیب کرسر :


Declare @Cmd VarChar(1000)
Declare @M1 int,@M2 int,@M3 int,@M4 int,@M5 int
Declare TmPCursor Cursor For
Select M1,M2,M3,M4,M5 From MyTbl Where MyID=1
Open TmPCursor
Set @Cmd=''
While 1=1 Begin
Fetch Next From TmPCursor Into @M1,@M2,@M3,@M4,@M5
If @@Fetch_Status<>0
Break
if IsNull(@M1,0)<>0 Set @Cmd=@Cmd+(Case When @Cmd='' Then '' Else ' Union All ' End)+'Select MID='+Convert(VarChar(20),@M1)
if IsNull(@M2,0)<>0 Set @Cmd=@Cmd+(Case When @Cmd='' Then '' Else ' Union All ' End)+'Select MID='+Convert(VarChar(20),@M2)
if IsNull(@M3,0)<>0 Set @Cmd=@Cmd+(Case When @Cmd='' Then '' Else ' Union All ' End)+'Select MID='+Convert(VarChar(20),@M3)
if IsNull(@M4,0)<>0 Set @Cmd=@Cmd+(Case When @Cmd='' Then '' Else ' Union All ' End)+'Select MID='+Convert(VarChar(20),@M4)
if IsNull(@M5,0)<>0 Set @Cmd=@Cmd+(Case When @Cmd='' Then '' Else ' Union All ' End)+'Select MID='+Convert(VarChar(20),@M5)
End
Close TmPCursor
Deallocate TmPCursor
Exec(@Cmd)

Iran58
پنج شنبه 03 تیر 1389, 07:24 صبح
سلام
مهندس جان از راهنمايي شما استفاده كردم اما به ارور زير برخوردم لطفاراهنمايي فرماييد باتشكر

ASKaffash
یک شنبه 06 تیر 1389, 07:56 صبح
سلام
مهندس جان از راهنمايي شما استفاده كردم اما به ارور زير برخوردم لطفاراهنمايي فرماييد باتشكر
سلام
این پیام می گوید که SP قبلا وجود دارد و ارتباطی با الگوریتم شما ندارد

Iran58
سه شنبه 08 تیر 1389, 08:01 صبح
سلام مهندس جان
به ارور زير برخورده ام لطفا كمك كنيد(چه بخشي رابايداصلاح كنم)
عكس يك

CREATE TABLE [dbo].[tblContract](
[Id] [int] IDENTITY(1,1) NOT NULL,
[NContract] [nvarchar](30) NULL,
[FName] [nvarchar](30) NULL,
[LName] [nvarchar](30) NULL,
[SDate] [datetime] NULL,
[EDate] [datetime] NULL,
[CountJens] [int] NULL,
[Jens1] [nvarchar](max) NULL,
[Jens2] [nvarchar](max) NULL,
[Jens3] [nvarchar](max) NULL,
[Jens4] [nvarchar](max) NULL,
[Jens5] [nvarchar](max) NULL,
[Jens6] [nvarchar](max) NULL,
[Jens7] [nvarchar](max) NULL,
[Jens8] [nvarchar](max) NULL,
[Jens9] [nvarchar](max) NULL,
[Jens10] [nvarchar](max) NULL,
CONSTRAINT [PK_tblContract] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
CONSTRAINT [IX_tblContract] UNIQUE NONCLUSTERED
(
[NContract] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
USE [Project]
GO
/****** Object: StoredProcedure [dbo].[Jens_tblContract] Script Date: 06/28/2010 11:51:08 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[Jens_tblContract]
@NContract nvarchar(30)
as
Declare @Cmd nvarchar(MAX)
Declare @Jens1 nvarchar(MAX),@Jens2 nvarchar(MAX),@Jens3 nvarchar(MAX),@Jens4 nvarchar(MAX),@Jens5 nvarchar(MAX),
@Jens6 nvarchar(MAX),@Jens7 nvarchar(MAX),@Jens8 nvarchar(MAX),@Jens9 nvarchar(MAX),@Jens10 nvarchar(MAX)
Declare TmPCursor Cursor For
Select Jens1,Jens2,Jens3,Jens4,Jens5,Jens6,Jens7,Jens8,Je ns9,Jens10 From tblContract Where NContract=@NContract
Open TmPCursor
Set @Cmd=''
While 1=1 Begin
Fetch Next From TmPCursor Into @Jens1,@Jens2,@Jens3,@Jens4,@Jens5,@Jens6,@Jens7,@ Jens8,@Jens9,@Jens10
If @@Fetch_Status<>0
Break
if IsNull(@Jens1,0)<>0 Set @Cmd=@Cmd+(Case When @Cmd='' Then '' Else ' Union All ' End)+'Select MID='+convert(nvarchar(max),@Jens1)
if IsNull(@Jens2,0)<>0 Set @Cmd=@Cmd+(Case When @Cmd='' Then '' Else ' Union All ' End)+'Select MID='+convert(nvarchar(max),@Jens2)
if IsNull(@Jens3,0)<>0 Set @Cmd=@Cmd+(Case When @Cmd='' Then '' Else ' Union All ' End)+'Select MID='+convert(nvarchar(max),@Jens3)
if IsNull(@Jens4,0)<>0 Set @Cmd=@Cmd+(Case When @Cmd='' Then '' Else ' Union All ' End)+'Select MID='+convert(nvarchar(max),@Jens4)
if IsNull(@Jens5,0)<>0 Set @Cmd=@Cmd+(Case When @Cmd='' Then '' Else ' Union All ' End)+'Select MID='+convert(nvarchar(max),@Jens5)
if IsNull(@Jens6,0)<>0 Set @Cmd=@Cmd+(Case When @Cmd='' Then '' Else ' Union All ' End)+'Select MID='+convert(nvarchar(max),@Jens6)
if IsNull(@Jens7,0)<>0 Set @Cmd=@Cmd+(Case When @Cmd='' Then '' Else ' Union All ' End)+'Select MID='+convert(nvarchar(max),@Jens7)
if IsNull(@Jens8,0)<>0 Set @Cmd=@Cmd+(Case When @Cmd='' Then '' Else ' Union All ' End)+'Select MID='+convert(nvarchar(max),@Jens8)
if IsNull(@Jens9,0)<>0 Set @Cmd=@Cmd+(Case When @Cmd='' Then '' Else ' Union All ' End)+'Select MID='+convert(nvarchar(max),@Jens9)
if IsNull(@Jens10,0)<>0 Set @Cmd=@Cmd+(Case When @Cmd='' Then '' Else ' Union All ' End)+'Select MID='+convert(nvarchar(max),@Jens10)
End
Close TmPCursor
Deallocate TmPCursor
Exec(@Cmd)

ASKaffash
چهارشنبه 09 تیر 1389, 07:54 صبح
سلام
این بخش را اینطوری تغییر دهید :


if Not @Jens1 Is Null Set @Cmd=@Cmd+(Case When @Cmd='' Then '' Else ' Union All ' End)+'Select MID=N'+Char(39)+@Jens1+Char(39)
if Not @Jens2 Is Null Set @Cmd=@Cmd+(Case When @Cmd='' Then '' Else ' Union All ' End)+'Select MID=N'+Char(39)+@Jens2+Char(39)
if Not @Jens3 Is Null Set @Cmd=@Cmd+(Case When @Cmd='' Then '' Else ' Union All ' End)+'Select MID=N'+Char(39)+@Jens3+Char(39)
if Not @Jens4 Is Null Set @Cmd=@Cmd+(Case When @Cmd='' Then '' Else ' Union All ' End)+'Select MID=N'+Char(39)+@Jens4+Char(39)
if Not @Jens5 Is Null Set @Cmd=@Cmd+(Case When @Cmd='' Then '' Else ' Union All ' End)+'Select MID=N'+Char(39)+@Jens5+Char(39)
if Not @Jens6 Is Null Set @Cmd=@Cmd+(Case When @Cmd='' Then '' Else ' Union All ' End)+'Select MID=N'+Char(39)+@Jens6+Char(39)
if Not @Jens7 Is Null Set @Cmd=@Cmd+(Case When @Cmd='' Then '' Else ' Union All ' End)+'Select MID=N'+Char(39)+@Jens7+Char(39)
if Not @Jens8 Is Null Set @Cmd=@Cmd+(Case When @Cmd='' Then '' Else ' Union All ' End)+'Select MID=N'+Char(39)+@Jens8+Char(39)
if Not @Jens9 Is Null Set @Cmd=@Cmd+(Case When @Cmd='' Then '' Else ' Union All ' End)+'Select MID=N'+Char(39)+@Jens9+Char(39)
if Not @Jens10 Is Null Set @Cmd=@Cmd+(Case When @Cmd='' Then '' Else ' Union All ' End)+'Select MID=N'+Char(39)+@Jens10+Char(39)