Skip to main content

#EvdeKal


Metin Tipinde Ayarlanmış Sürelerle İşlemlerde Toplama Sorunu

yücel üzülmez
yücel üzülmez
9
1038

Metin Tipinde Ayarlanmış Sürelerle İşlemlerde Toplama Sorunu

Çözüldü #1
Arkadaşlar bir teknede toplam sefer süresini, makine çalışma saatlerini, toplam yakıt miktarını ve yardımcı makine çalışma saatlerini takip edebileceğim bir çalışma yapmaya çalışıyorum aynı zamanda bunu yapmaya çalışırken Access öğrenmeyi amaçlıyorum. Haliliyas hocamın sayesinde belli bir seviyeye getirmeyi başardım. Visual Basic olayına tamamen yabancıyım. Şuan sadece nereden nereye ne ekleyebilirim onu keşfetme seviyesindeyim. 
Problememi gelince sefer ile ilgili bilgileri girebileceğim bir form oluşturdum ama bir sorgu yaptığımda metin şeklinde toplanmış saat bilgilerinin toplamını alamıyorum, ihtiyacım olan sorgu ile toplam sefer süresini güncel olarak görmek, bunun yanında yakılan yakıtı da takip etmek, aylık kaç saat sefer yapmışım, ne kadar yakıt yakmışım, yılllık kaç saat sefer yapmışım ne kadar yakıt yakmışım ve ilerleyen dönem de saatte ne kadar ortalama yakıt yakıyorum gibi bilgileri takip etmek istiyorum. Becerebilirsem örnek dosyada ekleyeceğim...
Son Düzenleme: 02/05/2019, 00:35, Düzenleyen: yücel üzülmez.
Cevapla
#2
Önce çalışmanıza 1 modül ekleyin
sonra Aşağıdaki Fonksiyonları Module Ekleyin

Visual Basic Code
Function ToplamYar(xMetin As String) As Double
Dim Metin() As String
Dim xZaman() As String
Metin = Split(xMetin, ",")
For x = LBound(Metin) To UBound(Metin)
txtmetin = Metin(x)
'__________kontrol
xVarmi = InStr(1, txtmetin, ":", 1)
sayisalmi = IsNumeric(Replace(txtmetin, ":", ""))
'__________________________

If xVarmi < 1 Or sayisalmi = False Then GoTo 10
'_________________________________________
xZaman = Split(txtmetin, ":")
If IsNumeric(xZaman(0)) Then ZmnSaatdk = 60 * CLng(xZaman(0)) Else ZmnSaatdk = 0
If IsNumeric(xZaman(1)) Then ZmnDakika = CLng(xZaman(1)) Else ZmnDakika = 0
SaatDkCevir = Nz(ZmnSaatdk, 0) + Nz(ZmnDakika, 0)
ToplamYar = ToplamYar + SaatDkCevir
10
Next

End Function

aşağıdaki kod formda değişecek"top_yard_mak_cal_sa_Click" olayını aşağıdaki gibi yapın[/color]

Visual Basic Code
Private Sub top_yard_mak_cal_sa_Click()
Dim xMetin As String
xMetin = Nz(Me.yard1_cal_sa, "") & "," & Nz(Me.yard2_cal_sa, "") & "," & Nz(Me.yard3_cal_sa, "")
xMetin = CStr(xMetin)
'Metin = Split(xMetin, ",")

ZmnTop = ToplamYar(xMetin)
ZmnSaat = ZmnTop \ 60 '":" & ToplamYar(metin)mod 60
Zmndk = ZmnTop Mod 60
Me.top_yard_mak_cal_sa = ZmnSaat & ":" & Zmndk

End Sub

__________________________________________________________
Son olarak da bir sorgu oluşturup sorgunun Sql koduna aşağıdakileri yazın

Visual Basic Code
SELECT sey_bil.s_nu, ToplamYar(CStr(Nz([sey_bil]![yard1_cal_sa],"") & "," & Nz([sey_bil]![yard2_cal_sa],"") & "," & Nz([sey_bil]![yard3_cal_sa],""))) AS Toplam, [Toplam]\60 & ":" & [Toplam] Mod 60 AS [Saat Dk]
FROM sey_bil;

önceki çalışmanızı kullanıp "top_yard_mak_cal_sa" hesabını sorgu üzerinden yaptırmaya çalıştım ama hata kontrolü yaptırmadım dolayısıyla saat alanlar "15:21" gibi  bir formatta olmalı dilerim çalışır)

.rar seybilden_hy5.rar (Dosya Boyutu: 29,14 KB | İndirme Sayısı: 4)
Cevapla
#3
Hocam sağol göstermiş olduğun yol ile bir seviye daha ilerledim ama hala bazı aksaklıklar var sanırım, verdiğiniz kodu kullanarak top_sefer ve ana_mak_cal_sa bilgilerini de metin kutusu içinden alarak sorgu içinde toplanması gerekiyor. Uygulamamın örneğini eklemek istiyorum ama dosya ekleme olayını beceremedim.
Cevapla
#4
"yeni cevap" butonuna bastığınızda yeni bir sayfaya yönlendiriliyorsunuz o sayfada dosya ekleme var
siz de çıkmıyor mu?
[Resim: do.php?imgf=0d2f24a0506f1.jpg]
Cevapla
#5
Teşekkürler hocam ben hep hızlı cevap alanını kullanıyormuşum  Ozur Fur
Cevapla
#6
Hocam son halini ekledim, biraz daha ilerledim sayenizde.
.rar seybilden2.rar (Dosya Boyutu: 43,34 KB | İndirme Sayısı: 3)
Cevapla

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

Yorum yapmak için üye olmanız gerekiyor

ya da