webForumDet fria alternativet

Select + search

Databaser & SQLur Databashanterare & SQL

5 svar · 362 visningar · startad av Chrille.M

Medlem sedan maj 200515 inlägg
Frågan#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 ;)

Medlem sedan nov. 20022 355 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.

Medlem 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.

Medlem sedan apr. 20012 266 inlägg
#4

Flyttas från .NET

Medlem sedan dec. 19995 875 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
Medlem 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

131 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)