-
اجرای کد اسکیوال در دلفی
من کد اسکیوال را می خواهم در یک ado query در دلفی اجرا کنم اما بعضی از دستورات رو نمی شناسه مثل دستور "Go" و کامنت ها
نمونه کد:
/*
2012/11/0905:47:38 ب.ظ
User: sa
Server: nic\sql2008
Database: PmNicDbYazd
Application:
*/
/* To prevent any potential data loss issues, you should review this script in detail before running it outside the context of the database designer.*/
BEGIN TRANSACTION
SET QUOTED_IDENTIFIER ON
SET ARITHABORT ON
SET NUMERIC_ROUNDABORT OFF
SET CONCAT_NULL_YIELDS_NULL ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
COMMIT
BEGIN TRANSACTION
GO
CREATE TABLE dbo.Tmp_aaa
(
srl int NOT NULL,
a int NOT NULL,
b int NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE dbo.Tmp_aaa SET (LOCK_ESCALATION = TABLE)
GO
IF EXISTS(SELECT * FROM dbo.aaa)
EXEC('INSERT INTO dbo.Tmp_aaa (srl, a, b)
SELECT srl, a, b FROM dbo.aaa WITH (HOLDLOCK TABLOCKX)')
GO
DROP TABLE dbo.aaa
GO
EXECUTE sp_rename N'dbo.Tmp_aaa', N'aaa', 'OBJECT'
GO
ALTER TABLE dbo.aaa ADD CONSTRAINT
PK_aaa PRIMARY KEY CLUSTERED
(
srl
) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
COMMIT
-
نقل قول: اجرای کد اسکیوال در دلفی
سلام
به این شکل که مشکلی نداره.
به جای ADO Query نیز میتوانید از مجموعه SDAC استفاده کنید و از SQL Script استفاده کرده و دستورات مورد نظر رو اجرا کنید.
-
نقل قول: اجرای کد اسکیوال در دلفی
نقل قول:
به این شکل که مشکلی نداره.
اما من با adoQuery که نتونستم اجرا کنم همانطور که گفتم کلمات کلیدی GO و کامنت ها را مجبور شدم بردارم شاید تنظیمات خاصی هم نیاز داره ضمنا من توی دلفی 7 کار می کنم حالا با SDAC هم امتحان می کنم
-
نقل قول: اجرای کد اسکیوال در دلفی
مجموعه مجموعه SDAC تودلفی 7 وجود داره یا باید اون رو تهیه کرد و نصب نمود؟
-
نقل قول: اجرای کد اسکیوال در دلفی
خیر مجموعه جداگانه ای هست که باید تهیه کرده و نصب کنید.
-
نقل قول: اجرای کد اسکیوال در دلفی
من هنوز در مورد دستور GO در کوئری هایی که از داخل دلفی با AdoQuery می خواهم اجرا کنم با مشکل مواجه هستم آیا برای اجرای این دستور کار خاصی می بایست انجام دهم لطفا راهنمایی کنید
-
نقل قول: اجرای کد اسکیوال در دلفی
با دستور go نمی خواد خود query رو excute کن adoquery1.excute
-
نقل قول: اجرای کد اسکیوال در دلفی
نقل قول:
با دستور go نمی خواد خود query رو excute کن adoquery1.excute
بعضی از کلمات کلیدی اسکیوال نظیر GO در ado Query قابل اجرا نیست و در صورتی که در کد اسکیوال وجود داشته باشد نمی توان ado Query را execute کرد (خطا می دهد).
آیا از کامپوننت های استاندارد دیگر دلفی XE2 می تونم استفاده کنم و مشکلم را حل نمایم؟
من نتونستم sdac را برای دلفی xe2 پیدا کنم
-
نقل قول: اجرای کد اسکیوال در دلفی
بهترین کار برای انجام چنین کارهایی استفاده از SP است.
در ضمن دلیل وجود اون GO اینه که SQL تشخیص بده که تا کجا رو جدا جدا ران کنه.
در جقیقت اون GO فقط حکم یک Delimiter رو داره نه بیشتر و اصلا دستور TSQL نیست. شما می تونید از تنظیمات SQL اون رو مثلا به Havij تغییر بدید.
برای ران شدنش هم در دلفی باید دستوراتتون رو تا GO جدا کنید و هر کدوم رو جدا ران کنید.
موفق باشید.
-
نقل قول: اجرای کد اسکیوال در دلفی
نقل قول:
برای ران شدنش هم در دلفی باید دستوراتتون رو تا GO جدا کنید و هر کدوم رو جدا ران کنید.
اول اینکه من یکسری کدهای دارم که نمی تونم از طریق پروسیجر اجرا کنم (برای اصلاح خطاهای سیستم فایل اسکیوال رو می خوام از طریق برنامه کاربرم اجرا کنه)
دوم اینکه GO رو باید بنویسم چون که مثلا اگر فیلد جدول رو تغییر بدم و خواسته باشم مقدار دهی کنم می بایست بین تغییر و مقدار دهی GO نوشته بشه تا جدول بروز باشه جهت مقدار دهی فیلد مورد نظر
سوم اینکه بعضی کدهای دیگه رو هم گیر می ده
از همراهی شما در این تاپیک متشکرم
-
نقل قول: اجرای کد اسکیوال در دلفی
اگر از مجموعه sdac یا unidac استفاده کنید با این کد میتونید هر چی خواستینو اجرا کنید.
procedure tpatern.runsql(acon: TUniConnection; afile: WideString);
var
scer: TUniScript;
i: Integer;
begin
if acon.Connected = false then
raiser('اتصال برقرار نيست');
runner.Connection := acon;
runner.SQL.Clear;
runner.SQL.LoadFromFile(afile);
Application.ProcessMessages;
runner.Execute;
Application.ProcessMessages;
end;
-
نقل قول: اجرای کد اسکیوال در دلفی
دلیل اون GO رو توضیح دادم.
می تونید با نوشتن یک Splitter ساده کوئری تون رو تکه تکه کنید و ران کنید.
اتفاقا چند وقت پیش یک همچین چیزی نوشتم،
procedure SplitText(Text, Delimiter: string; Ret: TStrings);
var
prev, next: integer;
begin
if not Assigned(Ret) then
Exit;
Ret.Clear;
prev := 1;
repeat
next := PosEx(Delimiter, Text, prev);
if next = 0 then
Break;
Ret.Add(Copy(Text, prev, next -prev));
prev := next +length(Delimiter);
until false;
end;
کدتون رو به یک همچین پروسیجری بفرستید تا در خروجی در قالب یک لیست بهتون تکه تکه کنه بده، بعد با یک حلقه ساده تمام خطوط رو ران کنید.
دلیل اینکه دلفی تمام دستورات اس کیو ال رو شامل نمی شه برمی گرده به ساختار درونی اس کیو ال استاندارد پیاده شده در خود دلفی، نه DBMS ی که دارید بهش کانکت می شید.
البته اون هم باید ساپورت کنه، ولی هر چی که ساپورت می کنه رو دلفی نداره. مثلا همین With یا For XML یا ...
البته اطلاعات من هم تا همین حده و هیچ وقت بیشتر از این تو عمق مطلب لازم نبوده که برم :لبخند: (لبخند گشاده هیستریک)
به هر حال امیدوارم این مطلب بهتون کمک کرده باشه.
موفق باشید.
-
نقل قول: اجرای کد اسکیوال در دلفی
نقل قول:
نوشته شده توسط
You-See
بهترین کار برای انجام چنین کارهایی استفاده از SP است.
در ضمن دلیل وجود اون GO اینه که SQL تشخیص بده که تا کجا رو جدا جدا ران کنه.
در جقیقت اون GO فقط حکم یک Delimiter رو داره نه بیشتر و اصلا دستور TSQL نیست. شما می تونید از تنظیمات SQL اون رو مثلا به Havij تغییر بدید.
برای ران شدنش هم در دلفی باید دستوراتتون رو تا GO جدا کنید و هر کدوم رو جدا ران کنید.
موفق باشید.
سلام این sp چیه که می فرمایید
-
نقل قول: اجرای کد اسکیوال در دلفی
-
نقل قول: اجرای کد اسکیوال در دلفی
میشه دقیق تر راهنمایی کنید من از دلفی xe4 استفاده میکنم
-
نقل قول: اجرای کد اسکیوال در دلفی
عرض کردم که در اس کیو ال نه دلفی.
با شی ADOStoredPtoc بهش متصل می شن.
-
نقل قول: اجرای کد اسکیوال در دلفی
از راهنمایییتون ممنون
چیز جدید یادگرفتم که خیلی کاربرد داره ولی آیا میشه با ADOSTOREPROCEDURE که به گرید وصل کردیم به کاربر اجازه تغییرات در بانک رو بدیم
یعنی وقتی کاربر یک رکورد رو تغییر داد اتوماتیک در بانک تغییرات ثبت بشه
مثل حالتی که ADOTABLE رو به گرید وصل کردیم
-
نقل قول: اجرای کد اسکیوال در دلفی
بله می شه. اما روش درستی نیستو بهتره برای تغییرات هم از یک اس پی جدا استفاده بشه.
-
نقل قول: اجرای کد اسکیوال در دلفی
حالا مشکل جدید پیدا شده
وقتی پروسیجر رو درست میکنم و دستور فیلترینگ زیر رو بهش میدم فقط با کاراکتر اول فیلتر میکنه و بقیه رو ندید میگیره
select*frommoshtariwherenamemoshtarilike'%'+@Moshtari+'%
مثلا اگر در جدولم رکورد شامل لغات کتاب و کباب و کریم را داشته باشیم و کاربر حرف ک رو بزنه حالا حرف بعدی هر چی میخواد باشه همه رو نشون میده
-
نقل قول: اجرای کد اسکیوال در دلفی
نقل قول:
نوشته شده توسط
ho.yasreby
حالا مشکل جدید پیدا شده
وقتی پروسیجر رو درست میکنم و دستور فیلترینگ زیر رو بهش میدم فقط با کاراکتر اول فیلتر میکنه و بقیه رو ندید میگیره
select*frommoshtariwherenamemoshtarilike'%'+@Moshtari+'%
مثلا اگر در جدولم رکورد شامل لغات کتاب و کباب و کریم را داشته باشیم و کاربر حرف ک رو بزنه حالا حرف بعدی هر چی میخواد باشه همه رو نشون میده
کسی جواب نداشت
-
نقل قول: اجرای کد اسکیوال در دلفی
select*from moshtari where namemoshtari like'%'+@Moshtari+'%
Please
Please
Please
Please
-
نقل قول: اجرای کد اسکیوال در دلفی
اون کلمات رو بردار عزیز من، خوب نیست.
این که فقط اول کلمات رو میاره احتمالا به جایی بستگی داره که کدتون رو قرار دادید.
نمونه کد رو بگذارید.
-
نقل قول: اجرای کد اسکیوال در دلفی
مجبور شدم خیلی وقته منتظرم و کارم بدجوری گیر کرده
این برنامه رو دقیقاً با دیتابیس اکسس نوشتم درست کار میکنه ولی وقتی با sql مینویسم به اسپیس و .... گیر میده از شما راهنمایی گرفتم فرمودید sp تحقیق کردم و انجام دادم حالا به این مشکل خوردم که عرض شد
نمونه کد کامل
procedure TForm8.Edit1Change(Sender: TObject);
begin
ADOStoredProc1.Close;
ADOStoredProc1.Parameters[1].Value:=edit1.Text;
ADOStoredProc1.Open;
end;
sp به شکل زیر است
USE [Henaras]
GO
/****** Object: StoredProcedure [dbo].[filtermoshtari] Script Date: 2013/09/23 05:54:10 ب.ظ ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[filtermoshtari]
@Moshtari char
as
select * from moshtari where namemoshtari like '%'+ @Moshtari+'%'
-
نقل قول: اجرای کد اسکیوال در دلفی
دلیلش اینه:
@Moshtari char
باید طولش رو معین کنید. مثلا این:
@Moshtari varchar(1000)
-
نقل قول: اجرای کد اسکیوال در دلفی
با سلام
من هم تقریبا چنین مشکلی را داشتم یعنی بایستی چند کلمه را مانند گوگل پیدا می کردم من با استفاده از امکان Full-Text Search در Sqlserver 2008 حل کردم
توصیه می کنم Full-Text Search جستجو کنید.امکانات فوق العاده قوی را دارد