Dinamik, Çapraz Sorgu İle Oluşturulan Form

1 2 3 4
14/02/2020, 20:31

feraz

Kıda alttaki kırmızı olanları eklemediğiniz için donuyormuş.
Transform olayını açıklarsanız seviniriz.


Application.Echo False
If IsNull(Metin1.Value) Then
MsgBox "Başlangıç Tarihi Giriniz."
Application.Echo True
Metin1.SetFocus
Exit Sub
End If
If IsNull(Metin3.Value) Then
MsgBox "Başlangıç Tarihi Giriniz."
Application.Echo True
Metin3.SetFocus
Exit Sub
End If
If CDbl(Metin1.Value) > CDbl(Metin3.Value) Then
MsgBox "Başlangıç Tarihi Bitiş Tarihinden büyük olamaz"
Application.Echo True
Metin1.Value = ""
Metin3.Value = ""
Metin1.SetFocus
Exit Sub
End If
14/02/2020, 20:40

feraz

(14/02/2020, 20:31)feraz yazdı: Kıda alttaki kırmızı olanları eklemediğiniz için donuyormuş.
Transform olayını açıklarsanız seviniriz.


Application.Echo False
If IsNull(Metin1.Value) Then
MsgBox "Başlangıç Tarihi Giriniz."
Application.Echo True
Metin1.SetFocus
Exit Sub
End If
If IsNull(Metin3.Value) Then
MsgBox "Başlangıç Tarihi Giriniz."
Application.Echo True
Metin3.SetFocus
Exit Sub
End If
If CDbl(Metin1.Value) > CDbl(Metin3.Value) Then
MsgBox "Başlangıç Tarihi Bitiş Tarihinden büyük olamaz"
Application.Echo True
Metin1.Value = ""
Metin3.Value = ""
Metin1.SetFocus
Exit Sub
End If

Ayrıca alttaki kod ilede Listboxun seçili olup olmadığını kontrol edebilirsiniz.
Kod:
If Liste5.ListIndex = -1 Then
MsgBox "ADI secilmedi...", vbCritical, "Hata"
Application.Echo True
Exit Sub
End If
14/02/2020, 22:22

alicimri

Sayın feraz haklısınız, dosyanın donma sorunun halledilmiş şeklini ilk mesajda güncelledim.
TRANSFORM çapraz sorgu oluşturma deyimi
14/02/2020, 23:05

feraz

Sağolunuz.
Alttaki kırmızı yeri eklememişsiniz yani listbox seçili olayını.

TRANSFORM bunun mantığını anlatabilirmisiniz nasıl çalışır.Accesse özgü birşey midir?



Option Compare Database

Private Sub Form_Load()
Metin1.SetFocus
End Sub

Private Sub Komut0_Click()
Application.Echo False
If IsNull(Metin1.Value) Then
MsgBox "Baþlangýç Tarihi Giriniz."
Application.Echo True
Metin1.SetFocus
Exit Sub
End If
If IsNull(Metin3.Value) Then
MsgBox "Baþlangýç Tarihi Giriniz."
Application.Echo True
Metin3.SetFocus
Exit Sub
End If
If CDbl(Metin1.Value) > CDbl(Metin3.Value) Then
MsgBox "Baþlangýç Tarihi Bitiþ Tarihinden büyük olamaz"
Application.Echo True
Metin1.Value = ""
Metin3.Value = ""
Metin1.SetFocus
Exit Sub
End If


If Liste5.ListIndex = -1 Then
MsgBox "ADI secilmedi...", vbCritical, "Hata"
Application.Echo True
Exit Sub
End If


    Const strForm = "Rapor"
    Const strCtl = "txtTest"
    Dim frm As Form
    Dim ctl As Control
    Dim lbl As Control
    DoCmd.OpenForm FormName:="Rapor", View:=acDesign
    Set frm = Forms("Rapor")
    frm.RecordSource = ""
    If IsNull(Liste5.Value) Then
    ek = ""
    Else
    ek = " AND adý='" & Liste5.Value & "'"
    End If
    Sql = "TRANSFORM Sum(Tablo1.say) AS Toplasay SELECT Tablo1.adý FROM Tablo1 WHERE (((Tablo1.tarih)>=" & CDbl(Metin1.Value) & ") AND ((Tablo1.tarih)<=" & CDbl(Metin3.Value) & "))" & ek & " GROUP BY Tablo1.adý PIVOT Tablo1.tarih;"
    frm.RecordSource = SQL
For x = 0 To Forms("Rapor").Controls.Count - 1
        DeleteControl frm.Name, frm.Controls(0).Name
  DoEvents
    Next
    sol = 0
    Dim ys As New ADODB.Recordset
ys.Open SQL, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
If ys.Fields.Count > 32 Then
RunCommand acCmdSave
DoCmd.Close acForm, "Rapor"
MsgBox "Tarih aralýðý 31 gün ile sýnýrlýdýr."
Metin3.Value = ""
Metin3.SetFocus
  Application.Echo True
Exit Sub
Else
For i = 0 To ys.Fields.Count - 1
  Set ctl = CreateControl(FormName:=strForm, ControlType:=acTextBox, ColumnName:=ys.Fields(i).Name, Left:=sol, Top:=0, Width:=750, Height:=288)
  ctl.Name = ys.Fields(i).Name
  ctl.TextAlign = 2
    Set lbl = CreateControl(FormName:=strForm, ControlType:=acLabel, Section:=acHeader, Left:=sol, Top:=0, Width:=750, Height:=450)
  lbl.Name = ys.Fields(i).Name & "x"
  lbl.TextAlign = 2
lbl.FontSize = 8
  If i <> 0 Then
lbl.Caption = Replace(ys.Fields(i).Name, "_", " ")
Else
lbl.Caption = ys.Fields(i).Name
End If
  sol = sol + 750
  Next
    RunCommand acCmdFormView
    RunCommand acCmdSave
    DoCmd.Close acForm, "StrForm"
  End If
  Application.Echo True
End Sub
14/02/2020, 23:17

alicimri

Ben tasarımı, Listbox istenirse seçilecek tek "adı" gelecek yoksa tüm liste gelecek şekilde yaptım.
14/02/2020, 23:23

feraz

O halde gifteki gibi hata veriyor.Bu hata olmaması için listbox olayını yazmıştım.


1 2 3 4