Sunucu adını seçin veya girin

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
osiso
Üye
Mesajlar: 46
Kayıt: 02 Eki 2007 04:56
Konum: İSTANBUL
İletişim:

Sunucu adını seçin veya girin

Mesaj gönderen osiso » 28 Nis 2015 10:27

Merhabalar Yapmış olduğum bir programı müşterilere dağıtacağım herkeste sunucu adı farklı olduğu için program içerisinden seçim yaptırtmak istiyorum hangi sunucuyu yada kullanıcıyı istiyorlarsa o nu seçsinler istiyorum ama o sunucu isimlerini delphi de gride yada herhangi bir yere çeken kodu bulamadım yardımcı olan arkadaşlara şimdiden çok teşekkür ederim.... Sorumla ilgili ekte resim vardır.
mesela ben butona tıkladığımda
resime göre
gridin 1. satırına GOKHAN
gridin 2. satırına GOKHAN\SQLEXPRESS
gridin 3. satırına KADIR-PC
gridin 4. satırına KADIR-PC\SQLEXPRESS
gridin 5. satırına PC1
gridin 6. satırına PC1\SQLEXPRESS
gridin 7. satırına SOZER
gridin 8. satırına YASEMİN\SQLEXPRESS Yazacak
başka bir pc ye gittiğimde de yine butona tıklayacağım hangi sunucular varsa onu seçeceğim....


//ADOQuery1.SQL.Text:='select * from sys.servers'; şöyle bir kod buldum ama bu benim işime yaramadı çünkü sadece serveri veriyor tek kayıt veriyor o yüzden olmadı...
Dosya ekleri
123.jpg
123.jpg (9.2 KiB) 1755 kere görüntülendi
Vurulup Tertemiz Alnından uzanmış Yatıyor
Bir Hilal Uğruna Ya Rab, Ne Güneşler Batıyor!

Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3044
Kayıt: 17 Nis 2006 07:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Sunucu adını seçin veya girin

Mesaj gönderen sabanakman » 29 Nis 2015 10:51

Sıklıkla bu listeye yetkiye, duvara takılarak sağlıklı tam liste getiremediği olmaktadır.

Kod: Tümünü seç

uses ADOInt, OleDB, DB, ActiveX, ComObj, ADODB;

procedure ListAvailableSQLServers(const Names : TStrings);
var
  RSCon: ADORecordsetConstruction;
  Rowset: IRowset;
  SourcesRowset: ISourcesRowset;
  SourcesRecordset: _Recordset;
  SourcesName, SourcesType: TField;

 function PtCreateADOObject(const ClassID: TGUID): IUnknown;
 var
   Status: HResult;
   FPUControlWord: Word;
 begin
   asm
     FNSTCW FPUControlWord
   end;
   Status := CoCreateInstance(CLASS_Recordset,nil,CLSCTX_INPROC_SERVER or CLSCTX_LOCAL_SERVER,IUnknown,Result);
   asm
     FNCLEX
     FLDCW FPUControlWord
   end;
   OleCheck(Status);
 end;
begin
  SourcesRecordset := PtCreateADOObject(CLASS_Recordset) as _Recordset;
  RSCon := SourcesRecordset as ADORecordsetConstruction;
  SourcesRowset := CreateComObject(ProgIDToClassID('SQLOLEDB Enumerator')) as ISourcesRowset;
  OleCheck(SourcesRowset.GetSourcesRowset(nil, IRowset, 0, nil, IUnknown(Rowset)));
  RSCon.Rowset := RowSet;
  with TADODataSet.Create(nil) do try
    Recordset := SourcesRecordset;
    SourcesName := FieldByName('SOURCES_NAME'); { do not localize }
    SourcesType := FieldByName('SOURCES_TYPE'); { do not localize }
    Names.BeginUpdate;
    Names.Clear;
    try
      while not Eof do begin
        if (SourcesType.AsInteger = DBSOURCETYPE_DATASOURCE) and (SourcesName.AsString <> '') then Names.Add(SourcesName.AsString);
        Next;
      end;
    finally
      Names.EndUpdate;
    end;
  finally
    Free;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ListAvailableSQLServers(ListBox1.Items);
end;
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .

thelvaci
Kıdemli Üye
Mesajlar: 769
Kayıt: 11 Tem 2010 06:17
Konum: Istanbul
İletişim:

Re: Sunucu adını seçin veya girin

Mesaj gönderen thelvaci » 29 Nis 2015 12:30

Şaban bey'in söylediğine ilave olarak; resim'de bizimle paylaştığınız ekranın aynısını çıkartmak istiyorsanız eğer; ADODB.pas içindeki PromptDataSource metodunu da kullanabilirsiniz.

varyemez
Üye
Mesajlar: 245
Kayıt: 01 Oca 2009 11:00
Konum: Bursa
İletişim:

Re: Sunucu adını seçin veya girin

Mesaj gönderen varyemez » 10 May 2015 02:01

Aşağıdaki linkteki programı kullanıyorum ben. istediğin serveri bularak uygun connection strng oluşturuyor. Sonra bunu alarak ini veya başka bir text dosyaya koyup programımda okutuyorum. Biraz sorunlu çalışsa da iş görüyor.

http://www.itstools.biz.tr/prindir/SQLS ... erator.rar

osiso
Üye
Mesajlar: 46
Kayıt: 02 Eki 2007 04:56
Konum: İSTANBUL
İletişim:

Re: Sunucu adını seçin veya girin

Mesaj gönderen osiso » 11 May 2015 04:10

saban akman hocamın vermiş olduğu kodlar bende bire bir çalıştı fakat thelvaci ve varyemez arkadaşlarıma da çok teşekkür ediyorum onlardan herhangi bir sonuç çıkaramadım varyemez hocam sizin proje nedendir bilinmez bende hep hata verdi hiç çalışmadı onun kaynak kodları da sizdemi kaynak kodlarından da bir sonuç çıkarılabilir gibi geliyor bana.
Vurulup Tertemiz Alnından uzanmış Yatıyor
Bir Hilal Uğruna Ya Rab, Ne Güneşler Batıyor!

Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3044
Kayıt: 17 Nis 2006 07:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Sunucu adını seçin veya girin

Mesaj gönderen sabanakman » 12 May 2015 10:22

Tuğrul Hocanın anlatmak istediği, hazır windows kütüphanelerinin kullanılması ile alakalı. Sanırım koda dökemediniz. Bence incelenmesinde kesinlikle fayda var :wink: .
1-)

Kod: Tümünü seç

uses ADODB;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  ADOConnection1.ConnectionString:=PromptDataSource(Handle, ADOConnection1.ConnectionString);
end;
veya
2-)

Kod: Tümünü seç

uses ADOCOnEd;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  EditConnectionString(ADOConnection1);
end;
Kolay gelsin.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .

Kullanıcı avatarı
bulutsuzluk_35
Üye
Mesajlar: 123
Kayıt: 06 Eki 2007 03:14
Konum: İzmir-Ankara-İstanbul-Antalya
İletişim:

Re: Sunucu adını seçin veya girin

Mesaj gönderen bulutsuzluk_35 » 18 May 2015 10:31

viewtopic.php?t=20072

Ben bunu kullanıyorum...sadece bu sorun için fazla gözükebilir belki :)

Kod: Tümünü seç

try
  try
    inc(Bilgi);
  except
    sabir;
  end;
finally
  inc(Mutluluk);
end;

Cevapla