Datasnap ikinci kez sorgu çalışmıyor..

FireMonkey ve Mobil uygulama (iOS, Android, Windows Phone) ile ilgili sorularınızı bu foruma sorabilirsiniz.
Cevapla
hbulus
Üye
Mesajlar: 163
Kayıt: 14 Tem 2003 11:30
İletişim:

Datasnap ikinci kez sorgu çalışmıyor..

Mesaj gönderen hbulus »

S.a.
Muharrem hocanın Datasnap Json örneği üzerinden giderek server ve client oluşturup bağlantıyı kurabiliyorum. Select yada insert into gibi demeler yaptım. Kayıt okuma ve kaydetmede sıkıntı yok. Sıkıntı şurada; bir kez bağlanıp select ya da insert yaptıktan sonra ikinci işleme tepki vermiyor. Örnek olarak select ile müşteri cari listesini listeliyorum, burada editteki değeri değiştirip ikinci defa sorgulayamıyorum, veya listelendikten sonra seçtiğim cari verisini başka bir tabloya insert yapamıyorum. Server kısmında 'bağlantı geldi' ikazını verdikten sonra askıda kalıyor. Acaba nerede hata yapıyorum.
Erbab-ı kemâli çekemez nakıs olan, rencide olur Dide-i Huffaş ziyadan....
hbulus
Üye
Mesajlar: 163
Kayıt: 14 Tem 2003 11:30
İletişim:

Re: Datasnap ikinci kez sorgu çalışmıyor..

Mesaj gönderen hbulus »

Hiç fikri olan yok mu abiler?
Takılıp kaldık bu noktada...!
Erbab-ı kemâli çekemez nakıs olan, rencide olur Dide-i Huffaş ziyadan....
Kullanıcı avatarı
AliZairov
Üye
Mesajlar: 341
Kayıt: 06 Nis 2012 03:09
Konum: Azerbaycan, Bakü
İletişim:

Re: Datasnap ikinci kez sorgu çalışmıyor..

Mesaj gönderen AliZairov »

Iyi geceler. İşlemler için kullandığın kodu paylaşmadan nerde hata olduğunu bulmak zor.
hbulus
Üye
Mesajlar: 163
Kayıt: 14 Tem 2003 11:30
İletişim:

Re: Datasnap ikinci kez sorgu çalışmıyor..

Mesaj gönderen hbulus »

Datasnapserver.jpg
Datasnapserver.jpg (5.31 KiB) 1751 kere görüntülendi
S.a.
Edit'e girdiğimiz değer ile sorgu sonucu stringgrid'e listeleniyor. Buraya kadar sorun yok. Edit'e yeni bir değer girip buton tıklanınca
sonuç yok. Server tarafında 'Bağlantı geldi' deyip kalıyor. Sanki ilk sorgudan sonra connection'ı sıfırlayıp yeniden açamıyor gibi.

Kod: Tümünü seç

function BaglantiSagla( strIpAddress, strPortNo, strDesktop_ServerMethodClassName, strDesktop_ClientDataSetProviderName :String ): boolean;
begin
  Result := False;
  Try
    if xSQLConnection = nil
      then xSQLConnection := TSQLConnection.Create(nil);

    xSQLConnection.ConnectionName                         := 'DataSnapCONNECTION';
    xSQLConnection.DriverName                             := 'DataSnap';
    xSQLConnection.Params.Values['HostName']              := strIpAddress;
    xSQLConnection.Params.Values['Port']                  := strPortNo;
    xSQLConnection.Params.Values['DriverUnit']            := 'Data.DBXDataSnap';
    xSQLConnection.Params.Values['CommunicationProtocol'] := 'tcp/ip';
    xSQLConnection.Params.Values['DatasnapContext']       := 'datasnap/';
    xSQLConnection.Params.Values['CharacterSet']          := 'utf8';
    xSQLConnection.LoginPrompt                            := False;
    xSQLConnection.Connected                              := True;

    if xDSProviderConnection = nil
      then xDSProviderConnection := TDSProviderConnection.Create(nil);

    xDSProviderConnection.SQLConnection   :=  xSQLConnection;
    xDSProviderConnection.ServerClassName :=  strDesktop_ServerMethodClassName;
    xDSProviderConnection.Connected       :=  True;

    if xClientDataSet = nil
      then xClientDataSet := TClientDataSet.Create(nil);

    xClientDataSet.RemoteServer := xDSProviderConnection;
    xClientDataSet.ProviderName := strDesktop_ClientDataSetProviderName;
    xClientDataSet.Active       := False;

    Result := True;
  Except
  End;
end;


procedure THeaderFooterForm.btn9Click(Sender: TObject);
var
c:Integer;
r:Integer;
bak:Currency;
begin
  bak:=0;

  if BaglantiSagla( Edit1.Text, Edit2.Text, 'TServerMethods1', 'DataSetProvider1' ) then
  begin
    With xClientDataSet do
    begin
          Active := False;
          With TStringList.Create  do
          begin
            Clear;
            Add('SELECT  plaka, musno, saseno from BULUS_AND_KABUL where plaka LIKE  :A or musno like :b or saseno like :c');
            CommandText := Text;
            Free;
          end;
          Params[0].Value:='%'+edt2.Text+'%';
          Params[1].Value:='%'+edt2.Text+'%';
          Params[2].Value:='%'+edt2.Text+'%';
          Active      := True;

          str.RowCount:=1;
          c:=0; r:=0;
            str.Columns[0].Header:='Plaka';
            str.Columns[1].Header:='CariKod';
            str.Columns[2].Header:='ŞaseNo ';
            while NOT EOF do
            begin
            str.Cells[c,r]:=FieldByName('plaka').AsString;
            str.Cells[c+1,r]:=FieldByName('musno').AsString;
            str.Cells[c+2,r]:=FieldByName('saseno').AsString;
            c:=0; r:=r+1;
            str.RowCount:=str.RowCount+1;
            Next;
            end;
      Active := False;
      Free;
      xSQLConnection.Close;
      xSQLConnection.Connected:=False;
    end;
  end;
end;
Erbab-ı kemâli çekemez nakıs olan, rencide olur Dide-i Huffaş ziyadan....
hbulus
Üye
Mesajlar: 163
Kayıt: 14 Tem 2003 11:30
İletişim:

Re: Datasnap ikinci kez sorgu çalışmıyor..

Mesaj gönderen hbulus »

Sorunun sebebini buldum gibi. Verileri sorgu sonucu stringgrid'de listeliyorum. Listbox'a çevirince düzeldi. Stringgrid'de mi hata var yoksa ben mi yanılıyorum, üstadlar bir yorum yaparsa sevinirim.
Erbab-ı kemâli çekemez nakıs olan, rencide olur Dide-i Huffaş ziyadan....
Cevapla