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 05:56
Konum: İSTANBUL
İletişim:

Sunucu adını seçin veya girin

Mesaj gönderen osiso »

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.16 KiB) 2889 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: 3077
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

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

Mesaj gönderen sabanakman »

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: 770
Kayıt: 11 Tem 2010 07:17
Konum: Istanbul
İletişim:

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

Mesaj gönderen thelvaci »

Ş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: 262
Kayıt: 01 Oca 2009 11:00
Konum: Bursa
İletişim:

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

Mesaj gönderen varyemez »

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 05:56
Konum: İSTANBUL
İletişim:

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

Mesaj gönderen osiso »

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: 3077
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

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

Mesaj gönderen sabanakman »

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: 124
Kayıt: 06 Eki 2007 04:14
Konum: İzmir-Ankara-İstanbul-Antalya
İletişim:

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

Mesaj gönderen bulutsuzluk_35 »

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