PDA

View Full Version : نام sql server در زمان نصب برنامه



mahdi939
سه شنبه 07 شهریور 1385, 11:08 صبح
با سلام
من میخواهم در زمانی که برنامه نصب می شود نام sql server به آن داده شود و نیاز به دادن یک نام ثابت به adoconnection نباشد و نام سرور خود را از جائی که برنامه نصبی آنرا تنظیم کرده است بخواند آیا install shield این قابلیت رادارد متشکرم .

با تشکر

Mojgan110
سه شنبه 07 شهریور 1385, 12:21 عصر
من هم دنبالش هستم.!

فعلا هم این را کشف کرده ام !!

داخل رجیستری ، کلیدی هست بنام InstalledInstances که اسم همه اینستنهایی که روی اون کامپیوتر نصب شده اند ، داخلش هست.

vcldeveloper
چهارشنبه 08 شهریور 1385, 07:31 صبح
Enumerating available SQL Servers. Retrieving databases on a SQL Server (http://delphi.about.com/od/sqlservermsdeaccess/l/aa090704a.htm)

Sohrab_Tapar
سه شنبه 22 اسفند 1385, 11:36 صبح
Enumerating available SQL Servers. Retrieving databases on a SQL Server

توسط اون کد فقط instance های در حال اجرا رو بدست میارین
با این کد میتونین لیست instance های نصب شده رو از رجیستری بدست بیارین


procedure TMainForm.SQLInstances(var Instances: TStrings);
Var
reg : TRegistry;
Buf : Pointer;
BufSize: Integer;
begin
If Instances = nil Then
Instances := TStringList.Create;
reg := TRegistry.Create;
try
reg.RootKey := HKEY_LOCAL_MACHINE;
If (reg.OpenKey('\SOFTWARE\Microsoft\Microsoft SQL Server',False))AND(reg.ValueExists('InstalledInsta nces')) Then Begin
BufSize := reg.GetDataSize('InstalledInstances');
GetMem(Buf, BufSize);
reg.ReadBinaryData('InstalledInstances', Buf^, BufSize);
try
GetDoubleNullStrings(Buf, Instances);
finally
FreeMem(Buf);
End;
End
Else Begin//sql server is not installed

End;
Finally
reg.Free;
End;
end;

nasr
سه شنبه 22 اسفند 1385, 13:00 عصر
procedure TFormInfo.FormCreate(Sender: TObject);
begin
try
with FormInfo do
begin
MemoAddress.Lines.LoadFromFile('C:\Ctrl.txt');
ADOConnection1.Connected := False;
ADOConnection1.ConnectionString := 'Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=Control_Nahaee;Data Source=' + MemoAddress.Lines.Text + ' ';
ADOConnection1.Connected := true;
TBInfo.Active := True;
end;
except on EFOpenError do
begin
ShowMessage('فایل CTRL.txt یافت نشد' );
Application.Free;
end;

end;

vcldeveloper
چهارشنبه 23 اسفند 1385, 08:37 صبح
توسط اون کد فقط instance های در حال اجرا رو بدست میارین
با این کد میتونین لیست instance های نصب شده رو از رجیستری بدست بیارین
کد شما صرفا رجیستری سیستم کاربر را جستجو می کنه، یعنی اگر SQL Server در شبکه موجود باشه، ولی روی سیستم کاربر نصب نباشه، چیزی پیدا نمی کنه. اما کد بالا به دنبال SQL Server های در حال اجرا در شبکه می گرده تا کاربر بتونه به هر کدوم که خواست متصل بشه!