# Yerel Veri İstemcisi (Local Data Client)

## 1. Genel bakış

| Konu | Açıklama |
|------|----------|
| Özellik adı (TR) | Yerel Veri |
| Özellik adı (EN) | Local Data |
| İstemci adı (TR) | Yerel Veri istemcisi |
| İstemci adı (EN) | Local Data Client |
| Uygulama | PAW Resource |
| Amaç | Resource makinesindeki yerel veritabanındaki tabloları görüntüleme, düzenleme, SQL ile sorgulama ve paket olarak aktarma |
| Depolama | Makineye özgü şifreli SQLite veritabanı |
| Lisans | PAW Robot ya da Eklenti lisansı ile kullanılabilir |

Yerel Veri, iş akışlarında ara sonuçları harici bir veritabanı sunucusuna ihtiyaç duymadan Resource makinesinde saklamak için kullanılır. Yerel Veri istemcisi ise bu veriyi etkileşimli olarak incelemenizi ve yönetmenizi sağlar.

> **Not:** Yerel Veri, workflow aktiviteleri (`DataTable To Local Data`, `Local Data To DataTable` vb.) ile aynı veritabanını kullanır. İstemci, bu tablolara Resource üzerinden manuel erişim penceresidir.


---

## 2. Kimler kullanabilir?

| Koşul | Açıklama |
|-------|----------|
| Uygulama girişi | PAW Resource’a giriş yapılmış olmalı |
| Lisans | Ortamda **Local Data** eklenti lisansı aktif olmalı |
| Lisans yoksa | Araç çubuğundaki **Yerel Veri** düğmesi görünmez / kullanılamaz |


---

## 3. Ne zaman kullanılır?

| Senaryo | Açıklama |
|---------|----------|
| Hata ayıklama | Workflow’un yazdığı tabloları satır satır kontrol etme |
| Operasyon | Üretimde biriken geçici veriyi inceleme veya temizleme |
| Şema yönetimi | Tablo / sütun ekleme, yeniden adlandırma, silme |
| SQL analizi | Özel sorgularla filtreleme, birleştirme, özet alma |
| Ortamlar arası aktarım | Veriyi `.pawld` paketiyle başka bir Resource makinesine taşıma |


---

## 4. Açma ve kapatma

### 4.1. Açma


1. PAW Resource’a giriş yapın.
2. Araç çubuğunda **Yerel Veri** düğmesine tıklayın (ipucu: *Yerel Veri istemcisini açar*).
3. Pencere açılır ve veritabanına bağlanır.
4. Durum çubuğunda bağlantı ve yüklenen tablo sayısı görünür.

> Pencere tek örnektir: zaten açıksa yeniden oluşturulmaz, öne getirilir.

### 4.2. Kapatma davranışı

| Eylem | Sonuç |
|-------|-------|
| Pencerenin **X** düğmesi | Pencere gizlenir; açık sekmeler ve yazdığınız SQL korunur |
| Oturum kapatma / Resource’tan çıkış | Oturum tamamen kapanır; bellek içi durum temizlenir |


---

## 5. Arayüz yapısı

| Bölüm | İçerik |
|-------|--------|
| Sol panel | Şema ağacı (tablolar ve sütunlar), filtre kutusu |
| Üst / araç çubuğu | Yenile, Çalıştır, Gözat düzenleme, İşlemler (Dışa Aktar / İçe Aktar / Tümünü Sil) |
| Orta alan | Sekmeler: **Sorgu** veya **Gözat** |
| Alt / sonuç alanı | Sorgu sonuç ızgaraları veya durum mesajları |
| Durum çubuğu | Bağlantı, satır sayısı, süre, işlem sonucu |


---

## 6. Şema paneli (tablolar ve sütunlar)

Sol taraftaki ağaç, veritabanındaki kullanıcı tablolarını ve sütunlarını gösterir.

### 6.1. Temel işlemler

| İşlem | Nasıl |
|-------|-------|
| Tabloları yenile | **Tabloları Yenile** |
| Filtrele | Şema filtre kutusuna tablo/sütun adı yazın |
| Tabloya gözat | Tabloyu seçip **Gözat** veya ilgili komutu kullanın |
| Tabloyu yeniden adlandır | Bağlam menüsü / satır içi düzenleme |
| Tabloyu sil | Bağlam menüsü → sil (onay gerekir; geri alınamaz) |
| Sütun ekle | Tablo bağlam menüsü → **Sütun Ekle** |
| Sütunu yeniden adlandır | Sütun düğümü üzerinde yeniden adlandırma |
| Sütunu sil | Onay sonrası silinir |
| Adı panoya kopyala | Bağlam menüsünden kopyalama |

### 6.2. Desteklenen sütun tipleri (UI)

| Tip | Açıklama |
|-----|----------|
| TEXT | Metin    |
| INTEGER | Tam sayı |
| REAL | Ondalıklı sayı |
| NUMERIC | Sayısal (genel) |


---

## 7. Sorgu sekmeleri (SQL)

### 7.1. Yeni sorgu

* **Yeni Sorgu** ile boş bir SQL sekmesi açılır.
* Sekme başlığı varsayılan olarak `Sorgu 1`, `Sorgu 2`, … şeklindedir.
* Sekme yeniden adlandırılabilir ve kapatılabilir.

### 7.2. SQL çalıştırma

| Yöntem | Açıklama |
|--------|----------|
| **Çalıştır** düğmesi | Aktif sorgu sekmesindeki SQL’i çalıştırır |
| **F5** | Aynı işlem (klavye kısayolu) |

| Kural | Açıklama |
|-------|----------|
| Seçili metin varsa | Yalnızca seçili SQL çalıştırılır |
| Seçim yoksa | Sekmedeki tüm SQL çalıştırılır |
| Birden fazla ifade | Noktalı virgülle ayrılmış ifadeler sırayla çalıştırılır |
| SELECT / benzeri | Sonuç ızgarasında satırlar gösterilir |
| INSERT / UPDATE / DELETE / DDL | Etkilenen satır veya durum mesajı gösterilir |
| Şema değiştiren DDL | Sol şema ağacı otomatik yenilenir |

### 7.3. Sonuçlar

| Bilgi | Örnek |
|-------|-------|
| Dönen satır | *Sorgu 120 ms içinde 25 satır döndürdü.* |
| Süre  | milisaniye veya saniye cinsinden |
| DML sonucu | *Tamamlandı. Etkilenen satır: 3* |

SQL metnini panoya kopyalama komutu da kullanılabilir.


---

## 8. Gözat sekmeleri (tablo düzenleme)

Gözat modu, bir tablonun satırlarını ızgara üzerinde doğrudan düzenlemenizi sağlar.

### 8.1. Açma

* Şemadan bir tablo seçip **Gözat** ile açın.
* Sekme başlığı: `{TabloAdı} - Gözat`
* Aynı tablo için tek bir sabit (pinli) gözat sekmesi tutulur; yeniden açmak mevcut sekmeye odaklanır.
* Gözat sekmeleri, sorgu sekmelerinin önünde listelenir.

### 8.2. Satır işlemleri

| İşlem | Açıklama |
|-------|----------|
| Hücre düzenleme | Izgarada değeri değiştirin (henüz veritabanına yazılmaz) |
| **Satır Ekle** | Yeni satır ekler |
| **Satır Sil** | Seçili satırı silmek üzere işaretler |
| **Değişiklikleri Uygula** | Bekleyen ekleme / güncelleme / silmeleri kaydeder |
| **Değişiklikleri İptal Et** | Kaydedilmemiş düzenlemeleri geri alır |
| Yenile | Tablayı veritabanından yeniden yükler (kaydedilmemiş değişikliklere dikkat) |

### 8.3. Kaydetme kuralları

| Kural | Açıklama |
|-------|----------|
| Uygula öncesi | Değişiklikler yalnızca ızgarada bekler |
| Uygula sonrası | Özet gösterilir (ör. *3 güncelleme, 1 ekleme*) |
| Bekleyen değişiklik yokken Uygula | *Bekleyen düzenleme yok.* |
| Sekmeyi kapatma | Kaydedilmemiş değişiklik varsa onay istenir |

> Gözat düzenlemeleri satır kimliği (`rowid`) üzerinden yapılır. Bu teknik sütun kullanıcıya gizli tutulur; elle silmeyin veya değiştirmeyin.

### 8.4. Izgara yardımcıları

| İşlem | Açıklama |
|-------|----------|
| Sütunu sığdır | Seçili sütun genişliğini içeriğe göre ayarlar |
| Tüm sütunları sığdır | Tüm sütunları içeriğe göre ayarlar |


---

## 9. Dışa aktarma, içe aktarma ve toplu silme

**İşlemler** menüsünden erişilir.

### 9.1. Dışa Aktar (`.pawld`)

| Adım | Açıklama |
|------|----------|
| 1    | **Dışa Aktar** seçin |
| 2    | Hedef dosya yolunu belirleyin (`.pawld`) |
| 3    | Paketi şifrelemek için bir parola girin |
| 4    | İşlem tamamlanınca *Dışa aktarma tamamlandı.* mesajı görünür |

| Paket içeriği | Açıklama |
|---------------|----------|
| Veritabanı kopyası | Makine anahtarından kullanıcı parolasına dönüştürülmüş kopya |
| Manifest      | Açık sorgu sekmelerinin başlık / SQL anlık görüntüleri (varsa) |

> Ham `.db` dosyasını başka makineye kopyalamak çalışmaz. Veriyi taşımak için mutlaka **Dışa Aktar / İçe Aktar** kullanın.

### 9.2. İçe Aktar

| Adım | Açıklama |
|------|----------|
| 1    | **İçe Aktar** seçin |
| 2    | `.pawld` dosyasını seçin |
| 3    | Paket parolasını girin |
| 4    | Onay: *Mevcut yerel veri içe aktarılan paketle değiştirilecek. Devam edilsin mi?* |
| 5    | Başarılıysa *İçe aktarma tamamlandı.* |

| Uyarı | Açıklama |
|-------|----------|
| Mevcut veri | İçe aktarma mevcut yerel veriyi paket içeriğiyle **değiştirir** |
| Yanlış parola | *Geçersiz parola.* |
| Boş parola | *Parola gerekli.* |

### 9.3. Tümünü Sil

| Adım | Açıklama |
|------|----------|
| 1    | **Tümünü Sil** |
| 2    | Onay: *Tüm tablolar silinsin mi? Bu işlem geri alınamaz.* |
| 3    | Tüm kullanıcı tabloları silinir; alan boşaltılır |
| 4    | *Tüm tablolar silindi.* |


---

## 10. Depolama ve güvenlik

| Konu | Açıklama |
|------|----------|
| Konum | `%AppData%\RPA WORK\PAW Resource\Extension Local Data\` |
| Dosya adı | `paw.extension.localdata.db` |
| Şifreleme | SQLCipher (makineye bağlı anahtar) |
| Taşınabilirlik | Ham DB dosyası başka PC’de açılamaz; `.pawld` + parola gerekir |
| Amaç | Disk üzerindeki yerel tabloları yetkisiz okumaya karşı korumak |

> Şifreleme anahtarı makine kimliğinden türetilir. Bu nedenle yedekleme / taşıma için yalnızca parola korumalı **Dışa Aktar** paketlerini kullanın.


---

## 11. Workflow aktiviteleriyle ilişki

Yerel Veri istemcisi ile workflow aktiviteleri aynı Resource yerel veritabanını paylaşır.

| Aktivite grubu (örnek) | Ne yapar |
|------------------------|----------|
| DataTable ↔ Local Data | Tablo oluşturma / okuma |
| Complex Local Data …   | Serbest SQL ile okuma veya işlem |
| Get Local Data Names / Columns / Row Count | Meta veri |
| Rename / Add Column / Drop Column / Delete | Şema ve veri yönetimi |
| Excel / CSV / MsSql / MySql / Oracle ↔ Local Data | Dış kaynaklarla aktarım |

| Kullanım ipucu | Açıklama |
|----------------|----------|
| İsimlendirme   | Aktivitede verdiğiniz Local Data adı = istemcide görünen tablo adı |
| Append         | Mevcut tabloya ekleme, sütun adlarının birebir aynı olmasını ister |
| Hata ayıklama sırası | Workflow çalıştır → istemciyi aç → tabloya Gözat veya SQL ile doğrula |


---

## 12. Sık kullanılan SQL örnekleri

```sql
-- Tüm satırları getir
SELECT * FROM "MusteriListesi";

-- Filtre
SELECT * FROM "MusteriListesi" WHERE "Durum" = 'Aktif';

-- Satır sayısı
SELECT COUNT(*) AS Adet FROM "MusteriListesi";

-- Belirli sütunlar
SELECT "MusteriNo", "AdSoyad" FROM "MusteriListesi";
```

> Tablo ve sütun adlarında Türkçe karakter veya özel karakter varsa çift tırnak kullanın: `"Tablo Adı"`.


---

## 13. İpuçları ve sınırlar

| Konu | Açıklama |
|------|----------|
| Lisans | İstemci yalnızca Local Data lisansı olan ortamlarda görünür |
| Makine bağlı şifreleme | `.db` dosyasını doğrudan kopyalamayın; `.pawld` kullanın |
| X ile kapatma | Sekmeler korunur; oturum kapanınca durum silinir |
| Gözat kaydı | Izgara değişiklikleri **Uygula** edilmeden kalıcı olmaz |
| İçe aktarma | Mevcut tüm yerel veriyi değiştirir; önce dışa aktarmayı düşünün |
| Tümünü Sil | Geri alınamaz; kritik ortamda önce yedek alın |
| Robot yolu farkı | Eski robot yardımcı yolu farklı olabilir; Resource istemcisi AppData altındaki şifreli DB’yi kullanır |


---

## 14. Sorun giderme

| Belirti | Olası neden | Ne yapmalı |
|---------|-------------|------------|
| Yerel Veri düğmesi yok | Lisans yok / oturum uygun değil | Local Data lisansını ve giriş durumunu kontrol edin |
| Pencere açılmıyor | Beklenmeyen uygulama hatası | Resource’u yeniden başlatın; hâlâ olmazsa destek ekibine bildirin |
| Tablolar boş görünüyor | Henüz veri yazılmamış veya yanlış ortam | Workflow’un Local Data aktivitelerini ve tablo adını doğrulayın |
| İçe aktarma başarısız | Yanlış parola / bozuk paket | Parolayı kontrol edin; paketi yeniden dışa aktarın |
| Başka makinede DB açılmıyor | Ham dosya makine anahtarıyla şifreli | `.pawld` ile dışa/içe aktarın |
| Gözat değişiklikleri kayboluyor | Uygula yapılmadan yenileme / kapatma | Önce **Değişiklikleri Uygula** |


---

## 15. Kısa referans — komutlar

| Komut / eylem | Açıklama |
|---------------|----------|
| Tabloları Yenile | Şemayı DB’den yeniden yükler |
| Yeni Sorgu    | Boş SQL sekmesi açar |
| Çalıştır / F5 | SQL çalıştırır |
| Gözat         | Tabloyu düzenlenebilir ızgarada açar |
| Değişiklikleri Uygula | Gözat düzenlemelerini kaydeder |
| Değişiklikleri İptal Et | Gözat düzenlemelerini geri alır |
| Dışa Aktar    | `.pawld` paket üretir |
| İçe Aktar     | `.pawld` paketiyle mevcut veriyi değiştirir |
| Tümünü Sil    | Tüm tabloları siler |