webForumDet fria alternativet

Select + search

5 svar · 362 visningar · startad av Chrille.M

Chrille.MMedlem sedan maj 200515 inlägg
#1

Hej! (första inlägget och fråga)
jag sitter och testar lite vb.net i visualstudio och en sql-server db kopplad till detta. Min fråga är, kan någon visa för mig hur jag ska skriva för att hämta förutbestämda värden från en sql-db. Tex. användaren har fyllt i ett gäng olika värden i lika många textboxar, och beroende på vad han /hon fyllt i ska värden hämtas ur db. Möjligheten ska även finnas för användaren att hoppa över en textbox att fylla i, men ändå kunna söka på de värden som är ifyllda.

ps. Det är select-frågan jag är nyfiken på.

Tack på förhand!

// en sk.Rookie ;)

Mc FettoMedlem sedan nov. 20021 920 inlägg
#2

Fel forum om du vill ha hjälp med sql. Men du får helt enkelt bygga en metod som kollar textboxarna och därifrån konkatinera (stavning?) ihop en sql-sträng.

Chrille.MMedlem sedan maj 200515 inlägg
#3

Tack för påpekandet!

Var lite tankspridd när jag skev inlägget...men ska genast lägga frågan i ett annat forum.

renholmMedlem sedan apr. 20012 048 inlägg
#4

Flyttas från .NET

BrimbaMedlem sedan dec. 19992 966 inlägg
#5

Här ser du ett exempel (hämtat från swesecure.com)

CREATE  PROCEDURE dbo.SearchUserSELECT

@province		varchar(100) = null,
@fromAge		tinyint = null,
@toAge		tinyint = null,
@sex		tinyint = null,
@username		varchar(50) = null,
@haveUserPicture	bit = null

AS

DECLARE 	@sql 		nvarchar(1000),
	@paramlist		nvarchar(4000)

-- SELECT
SELECT @sql = 'SELECT
t1.userId, t1.username
FROM 
	users t1’
if @haveUserPicture = 1
SELECT @sql = @sql + ‘INNER JOIN userPictures t2 ON t1.userId = t2.userId
else
SELECT @sql = @sql + ‘LEFT JOIN userPictures t2 ON t1.userId = t2.userId

SELECT @sql = @sql + ‘
WHERE 
	1=1’

IF @province IS NOT NULL
SELECT @sql = @sql + ‘and t1.province = @province’
IF @sex IS NOT NULL
SELECT @sql = @sql + ‘and t1.sex = @sex’

IF @ageFrom IS NOT NULL AND @ageTo IS NOT NULL
	SELECT @sql = @sql + ' and t1.age BETWEEN @ageFrom AND @ageTo'
ELSE
	IF @ageFrom IS NOT NULL 
		SELECT @sql = @sql + ' and t1.age >= @ageFrom'
	ELSE
		IF @ageTo IS NOT NULL
			SELECT @sql = @sql + ' and t1.age <= @ageTo'
IF @username IS NOT NULL
	SELECT @sql = @sql + ‘and t1.username like @username’

SELECT @sql = @sql +’ORDER BY 
	t1.username’

-- PARAMS
SELECT @paramlist	= '@province		varchar(100),
    @fromAge	tinyint,
    @toAge		tinyint,
    @sex		tinyint,
    @username	varchar(50),
    @haveUserPicture 	bit’

-- EXECUTE
EXEC sp_executesql 	@sql, @paramlist, 
		@province, @fromAge, @toAge, @sex,
		@username, @haveUserPicture

GO
Chrille.MMedlem sedan maj 200515 inlägg
#6

Tack för hjälpen!

Det blev visst lite rörigt då jag la frågan på fel plats, men jag ska försöka skärpa mig till nästa gång jag gör ett inlägg.
Jag ska även försöka specifisera frågan lite så att den inte berör både sql och vb.net. om jag kan.....
:OO

Genererad på 371 ms · cache AV · v20260730165559-full.f96bc7eb