Skip to main content

AccessTr.neT


2 Alanı Birleştirme

2 Alanı Birleştirme

Çözüldü #1
Merhabalar,

Access kullanmaya yeni başladım.

Örnek tabloda 2 alan var. 3. cü alana otomatik =alan1&metneçevir(alan2;0000)  yapmak istiyorum

Baya araştırdım tahminim ararken doğru kelimeleri kullanmadım

Varsayılan değere [ALAN1] & [ALAN2] gibi kombinasyonlar denedim hep hata aldım

İyi Çalışmalar
.rar Deneme.rar (Dosya Boyutu: 46,61 KB | İndirme Sayısı: 1)
Son Düzenleme: 18/04/2019, 13:03, Düzenleyen: hlojan.
Cevapla
#2
Merhaba, access'e hoşgeldiniz. Metne çevir işleci için modül eklemeniz gerekiyor. Modülü tabloda çağıramazsınız. 
Bu işlemi form ile kayıt eklerken veya sorgu ile yapabilirsiniz. Sorgu ile yapılmış hali ektedir.
Veri kaydı yaptığınız formu ekleyin. Form üzerinden çözüm üretelim. Bu Excel tablosu değil. Accessde tablolar veri depolamak için kullanılır, açılıp veri girişi yapılmaz.
.zip veribirlestir_sld.zip (Dosya Boyutu: 23,2 KB | İndirme Sayısı: 5)
Cevapla
#3
kod içerisindeki metneçevir nedir acaba?
SÖZ VERİYORUM... USLU DURUCAM...
Cevapla
#4
metne çevir prosedürü modülde yer alıyor,
sayısal verileri metne çevirmek için kullanılıyor
13=on üç

Public Function Sayiyi_Metne_Cevir(Sayi As Double) As String
On Error GoTo Hata_Olustu_Satiri
'Bu fonksiyon rakkam kullanilarak yazilan sayiyi metne cevirir.
'Sonuc Sayiyi_Metne_Cevir fonksiyonunun degeri olarak geri doner.
'Bu fonksiyon kesirli sayilari, yuvarladiktan sonra isleme sokar.

Dim S_Metin As String, Isaret As String
Dim S_Rakkam As Double, M_Rakkam As Double
Dim Sayac As Byte

'Fonksiyon tam sayilar icin calistigindan
'Sayi yuvarlanarak tam sayiya cevriliyor
Sayi = Round(Sayi)

Select Case Sayi
Case 0:
'Sayi sifir. Fonksiyon degerini sifir dondur, fonksiyondan cik
Sayiyi_Metne_Cevir = "sıfır"
GoTo Cikis_Satiri
Case Is < 0:
'Sayi negatif. Isareti degerini eksi yap. Sayiyi pozitife cevir, isleme devam et
Isaret = "eksi"
Sayi = -1 * Sayi
Case Is > 0:
'Sayi pozitif. Isleme devam et
Isaret = ""
End Select

'Islemlerde mod fonksiyonu kullanilacaginda overflow u engellemek icin
'Sayi 9 haneli sayilara bolunerek isleme sokuluyor
S_Rakkam = Sayi - 1000000000 * Round(0.000000001 * Sayi, 0)
If S_Rakkam < 0 Then
S_Rakkam = S_Rakkam + 1000000000
End If
M_Rakkam = S_Rakkam

'Donguye baslamadan once Sayac degerini 1'e esitle
'Sayac, sagdan itibaren kacinci 3 hanenin isleme girdigini gosterir.
Sayac = 1

Do While Sayi > 0
If (S_Rakkam Mod 1000) > 0 Then
Select Case Sayac
Case 1: S_Metin = UcHane(S_Rakkam Mod 1000)
Case 2:
'Binler bolumunde ozel bir durum var. Eger bu uc hane 001 seklinde olursa
'birbin ifadesi kullanilmadigi icin bu durumda sadece bin yazdiracagiz
If (S_Rakkam Mod 1000) = 1 Then
S_Metin = "bin" & S_Metin
Else
S_Metin = UcHane(S_Rakkam Mod 1000) & "bin" & S_Metin
End If
Case 3: S_Metin = UcHane(S_Rakkam Mod 1000) & "milyon" & S_Metin
Case 4: S_Metin = UcHane(S_Rakkam Mod 1000) & "milyar" & S_Metin
Case 5: S_Metin = UcHane(S_Rakkam Mod 1000) & "trilyon" & S_Metin
Case 6: S_Metin = UcHane(S_Rakkam Mod 1000) & "katrilyon" & S_Metin
'Bu bolumu ayni mantikla devam ettitmek mumkun ama Access
'15 haneden buyuk sayilarda yuvarlama yapacagi icin sonuc dogru olmaz
'Bu bolum algoritma olarak dogrudur.
Case Else
End Select
End If

'Isi biten sagdaki uc hane siliniyor
S_Rakkam = (S_Rakkam - (S_Rakkam Mod 1000)) / 1000

'Eger sag taraftaki dokuz hanenin islemi bittiyse
'sonraki dokuz hane S_Rakkam degerine esitleniyor
If Sayac Mod 3 = 0 Then
Sayi = (Sayi - M_Rakkam) / 1000000000
S_Rakkam = Sayi - 1000000000 * Round(0.000000001 * Sayi, 0)
If S_Rakkam < 0 Then
S_Rakkam = S_Rakkam + 1000000000
End If
M_Rakkam = S_Rakkam
End If

Sayac = Sayac + 1
Loop

Sayiyi_Metne_Cevir = Isaret & S_Metin

Cikis_Satiri:
Exit Function

Hata_Olustu_Satiri:
MsgBox Error$
Resume Cikis_Satiri

End Function
Cevapla
#5
cevabiniz icin cok teşekkür ederim.
SÖZ VERİYORUM... USLU DURUCAM...
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da