PDA

View Full Version : تبدیل کد SQL به کد قابل استفاده در دلفی



جواد ملاولی
دوشنبه 28 دی 1388, 20:54 عصر
سلام. در تالار مربوط به Sql Server ، یه سوال پرسیدم؛ مدیر بخش این کد رو معرفی کرد:


SET NOCOUNT ON
CREATE TABLE a
(
i INT ,
j CHAR
)

INSERT INTO a VALUES ( 1, 'a' )
INSERT INTO a VALUES ( 1, 'h' )
INSERT INTO a VALUES ( 2, 'j' )
INSERT INTO a VALUES ( 2, 'n' )
INSERT INTO a VALUES ( 2, 'q' )
INSERT INTO a VALUES ( 2, 'd' )
INSERT INTO a VALUES ( 3, 'a' )
INSERT INTO a VALUES ( 3, NULL )
INSERT INTO a VALUES ( 3, 's' )

GO

ALTER FUNCTION list
(
@n INT
)
RETURNS VARCHAR(25)
AS
BEGIN
DECLARE @j VARCHAR(25)
SET @j = ''

SELECT @j = @j + CASE WHEN j IS NOT NULL THEN j+'-'
ELSE ''
END
FROM a
WHERE i = @n

RETURN @j
END

GO


SELECT i, list=dbo.list(i)
FROM a
GROUP BY i

سوالم این بود:

فرض کنید جدولی داریم که در آن مشخصات کاربران سیستم رو نگهداری می کنیم. حالا میخواهیم یک کوئری بگیریم به این نحو که رکوردهایی که نام خانوادگی آنها مثلا کرمی است رو بده، به این شکل که فقط یک رکورد برگردونه و نام کوچک کاربران رو در یک فیلد بنویسه و با کاما از هم جدا کنه.
دستور sql رو چطور باید بنویسیم؟

چه جوری میتونم این کد رو در دلفی استفاده کنم؟

rasoolgh
سه شنبه 29 دی 1388, 12:09 عصر
به نظر من بهتره كه كد رو به صورت يه StoreProcedure تو sql server بنويسد و تو دلفي با استفاده از adoStoreProcedure اون رو اجرا كنيد

جواد ملاولی
سه شنبه 29 دی 1388, 12:24 عصر
به نظر من بهتره که کد رو به صورت یه StoreProcedure تو sql server بنویسد و تو دلفی با استفاده از adoStoreProcedure اون رو اجرا کنید
من بانک برنامه ام اکسس هستش. باز هم میتونم اینکار رو بکنم؟

rasoolgh
سه شنبه 29 دی 1388, 12:37 عصر
من توي access چيزي به نام storeProcedure نديدم
ولي همين كدها رو در صورتي كه از نظر دستورات sql مشكل نداشته باشه با AdoQuery ميتونيد اجرا كنيد

DataMaster
سه شنبه 29 دی 1388, 13:57 عصر
این کدها مربوط به SQL Server هست و اکسس کاملا پشتیبانی نمیکنه

ُSelect top 1 Users where Lname='کرمی'

جواد ملاولی
سه شنبه 29 دی 1388, 17:32 عصر
این کدها مربوط به SQL Server هست و اکسس کاملا پشتیبانی نمیکنه

ُSelect top 1 Users where Lname='کرمی'
در مورد کدتون بیشتر توضیح میدید؟

DataMaster
سه شنبه 29 دی 1388, 20:00 عصر
ببخشید من سوالتون رو قبلا درست متوجه نشده بودم
توی اکسس امکان نوشتن SP و همچنین امکاناتی از قبیل حلقه و کرسر نداره
پس باید ابندا تمام رکوردهایی رو که مورد نظرتون هست واکشی کنید (مثلا با adoquery ) بعدا خودتون با استفاده از امکانات DataSet اطلاعات مورد نظرتون رو بدست بیارید