- Katılım
- 5 Mayıs 2022
- Mesajlar
- 4
- Excel Vers. ve Dili
- vba
Merhabalar Arkadaşlar.
Ben Access veri tabanlı excel userform arayüzlü bir Bakım onarım takip programı hazırladım.
Sorunum şu şekilde access veri tabanım ağda ortak kılasör içerisinde excel her kullanıcının masa üstünde vba yolları düzenledim ağda bulunan ortak klasör yolunu girdim masa üzerinde çalışınca ağda bulunan access veri tabanından bilgileri getiriyor program sorunsuz çalışıyor. tek sıkıntım a ve b kişisi düşünelim a kişisi bir veri girdiğinde b kişisi ekranda bu değişikliği anında göremiyor ancak b kişiside bir veri girip kaydettiği zaman a kişisinin girmiş olduğu veriyi listbox görebiliyor. Acaba kodlamadamı bir hata yaptım diye düşünüyorum yada kaydet butonuna bastığımda kullanıcılarda açık olan ekranları tetikleyecek bir kodmu var benmi bilmiyorum bu konu hakkında yardımcı olabilrseniz çok sevinirim.
Aşağıda Arıza kaydı oluştur butonun (Kaydet Butonu) Kodlarını paylaşıyorum.
Private Sub CommandButton25_Click()
On Error Resume Next
Dim baglan As New Connection
Dim rs As New Recordset
Dim sh As Worksheet
sh.Activate
If TextBox28 <> "" And TextBox29 <> "" And TextBox30 <> "" And ComboBox13.Value <> "" And ComboBox14.Value <> "" And TextBox27 <> "" Then
baglan.Open "Provider=Microsoft.Ace.Oledb.12.0;data source=\\Windows-ltk17dq\maintenance\BAKIM\master.accdb;"
rs.Open "select * from arzkyd where Kimlik", baglan, adOpenKeyset, adLockPessimistic
rs.AddNew
rs.Fields(1) = Me.TextBox28.Text
rs.Fields(2) = Me.TextBox29.Text
rs.Fields(3) = Me.TextBox30.Text
rs.Fields(4) = Me.ComboBox13.Text
rs.Fields(5) = Me.ComboBox14.Text
rs.Fields(6) = Me.TextBox27.Text
rs.Update
secim = "ArizaKaydi"
Set yeniexcel = Workbooks.Add
With yeniexcel
.SaveAs Filename:="\\Windows-ltk17dq\maintenance\BAKIM\Raporlar\" & secim & ".xlsx"
.Close
End With
Set objxl = CreateObject("excel.application")
With objxl
.Visible = False
.Workbooks.Open "\\Windows-ltk17dq\maintenance\BAKIM\Raporlar\" & secim & ".xlsx"
.ActiveSheet.Range("t1").Value = "esim"
.ActiveSheet.Range("a1").Value = "ID Numarası:"
.ActiveSheet.Range("b1").Value = "Arıza Bildirimi Yapan:"
.ActiveSheet.Range("c1").Value = "Arıza Bildirim Tarihi:"
.ActiveSheet.Range("d1").Value = "Arıza Bildirim Saati:"
.ActiveSheet.Range("e1").Value = "Makine Adı:"
.ActiveSheet.Range("f1").Value = "Arıza Türü:"
.ActiveSheet.Range("g1").Value = "Arıza Tanımı:"
.ActiveSheet.Range("A2").CopyFromRecordset rs
.Range("a:g").Columns.AutoFit
.ActiveWorkbook.Save
.ActiveWorkbook.Close
ThisWorkbook.Application.Visible = False
ThisWorkbook.Application.Hide
End With
rs.Close
baglan.Close
Call arıza_gonder
Call gonder
Call hub
Kill "\\Windows-ltk17dq\maintenance\BAKIM\Raporlar\*.*"
Me.TextBox28.Text = ""
Me.ComboBox13.Clear
Me.ComboBox14.Clear
Me.TextBox29.Text = ""
Me.TextBox30.Text = ""
Me.TextBox27.Text = ""
Else
MsgBox "ALANLARI DOLDURUNUZ !"
End If
End Sub
Ben Access veri tabanlı excel userform arayüzlü bir Bakım onarım takip programı hazırladım.
Sorunum şu şekilde access veri tabanım ağda ortak kılasör içerisinde excel her kullanıcının masa üstünde vba yolları düzenledim ağda bulunan ortak klasör yolunu girdim masa üzerinde çalışınca ağda bulunan access veri tabanından bilgileri getiriyor program sorunsuz çalışıyor. tek sıkıntım a ve b kişisi düşünelim a kişisi bir veri girdiğinde b kişisi ekranda bu değişikliği anında göremiyor ancak b kişiside bir veri girip kaydettiği zaman a kişisinin girmiş olduğu veriyi listbox görebiliyor. Acaba kodlamadamı bir hata yaptım diye düşünüyorum yada kaydet butonuna bastığımda kullanıcılarda açık olan ekranları tetikleyecek bir kodmu var benmi bilmiyorum bu konu hakkında yardımcı olabilrseniz çok sevinirim.
Aşağıda Arıza kaydı oluştur butonun (Kaydet Butonu) Kodlarını paylaşıyorum.
Private Sub CommandButton25_Click()
On Error Resume Next
Dim baglan As New Connection
Dim rs As New Recordset
Dim sh As Worksheet
sh.Activate
If TextBox28 <> "" And TextBox29 <> "" And TextBox30 <> "" And ComboBox13.Value <> "" And ComboBox14.Value <> "" And TextBox27 <> "" Then
baglan.Open "Provider=Microsoft.Ace.Oledb.12.0;data source=\\Windows-ltk17dq\maintenance\BAKIM\master.accdb;"
rs.Open "select * from arzkyd where Kimlik", baglan, adOpenKeyset, adLockPessimistic
rs.AddNew
rs.Fields(1) = Me.TextBox28.Text
rs.Fields(2) = Me.TextBox29.Text
rs.Fields(3) = Me.TextBox30.Text
rs.Fields(4) = Me.ComboBox13.Text
rs.Fields(5) = Me.ComboBox14.Text
rs.Fields(6) = Me.TextBox27.Text
rs.Update
secim = "ArizaKaydi"
Set yeniexcel = Workbooks.Add
With yeniexcel
.SaveAs Filename:="\\Windows-ltk17dq\maintenance\BAKIM\Raporlar\" & secim & ".xlsx"
.Close
End With
Set objxl = CreateObject("excel.application")
With objxl
.Visible = False
.Workbooks.Open "\\Windows-ltk17dq\maintenance\BAKIM\Raporlar\" & secim & ".xlsx"
.ActiveSheet.Range("t1").Value = "esim"
.ActiveSheet.Range("a1").Value = "ID Numarası:"
.ActiveSheet.Range("b1").Value = "Arıza Bildirimi Yapan:"
.ActiveSheet.Range("c1").Value = "Arıza Bildirim Tarihi:"
.ActiveSheet.Range("d1").Value = "Arıza Bildirim Saati:"
.ActiveSheet.Range("e1").Value = "Makine Adı:"
.ActiveSheet.Range("f1").Value = "Arıza Türü:"
.ActiveSheet.Range("g1").Value = "Arıza Tanımı:"
.ActiveSheet.Range("A2").CopyFromRecordset rs
.Range("a:g").Columns.AutoFit
.ActiveWorkbook.Save
.ActiveWorkbook.Close
ThisWorkbook.Application.Visible = False
ThisWorkbook.Application.Hide
End With
rs.Close
baglan.Close
Call arıza_gonder
Call gonder
Call hub
Kill "\\Windows-ltk17dq\maintenance\BAKIM\Raporlar\*.*"
Me.TextBox28.Text = ""
Me.ComboBox13.Clear
Me.ComboBox14.Clear
Me.TextBox29.Text = ""
Me.TextBox30.Text = ""
Me.TextBox27.Text = ""
Else
MsgBox "ALANLARI DOLDURUNUZ !"
End If
End Sub