• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Kayıtları Listbox' ta sütunlara aktarmak

  • Konbuyu başlatan Konbuyu başlatan tamer42
  • Başlangıç tarihi Başlangıç tarihi

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,201
Excel Vers. ve Dili
Office 2013 İngilizce
Merhabalar,

form üstünde çalışırken bir tabloyu ADO ile açıp, içinde SQL sorgusuna uyan veri leri bir listbox üzerine almak isterken;


Kod:
Dim rs As New ADODB.Recordset
rst.Open "SELECT * FROM Kişiler WHERE SiraNo=" & txtAra & ";", CurrentProject.Connection, adOpenKeyset, adLockOptimistic

rst.MoveFirst
     While Not rst.EOF
st = rst(1) & " - " & rst(2) & " - " & rst(0)
Me.List132.AddItem st
rst.MoveNext
Wend

rs.Close


Tablo 3 sütunlu olduğu için Listbox' u da 3 sütunlu olarak ayarladım, yalnız birebir tablodaki sütunları listbox taki farklı sütunlara akramadım,

st = rst(1) & " - " & rst(2) & " - " & rst(0)

bu şekilde birleştirerek ancak 1. sütuna aktarabildim.


rst(1) >>> 1. sütuna ... Me.List132.Column (0)
rst(2) >>> 2. sütuna ... Me.List132.Column (1)
rst(0) >>> 3. sütuna ... Me.List132.Column (2)

gibi aktarabirmiyim?

İyi Çalışmalar.
 
sorguyu listbox ın rowsource na niye aktarmıyorsun da bu şekilde uğraşıyorsun?
 
sorguyu listbox ın rowsource na niye aktarmıyorsun da bu şekilde uğraşıyorsun?

rowsource işlemini de uğraştım fakat yapamadım.
Kod:
Me.List132.RowSource= ..........

........ olan yere "rst" ifadesini nasıl yazmam gerektiğini çözemedim. "rst" diye denedim olmadı.


İyi Çalışmalar.
 
hiç kod tarafına girmene gerek yok.
listbox ın özelliklerinden hallediyorsun.
 
merhabalar,

hiç kod tarafına girmene gerek yok.
listbox ın özelliklerinden hallediyorsun.


Benim bir sonraki aşamada listbox' a (List132) veri aktarırken kontrollü aktarım yapmaktır.
O nedenle kodla ve sırayla aktarmayı düşündüm.
Kod:
Me.List132.AddItem st

SQL sorgusuna uyan "rst(1)" ("SiraNo") veri lerine farklı bir listbox ' a daha (List12) bakacak;
bu değer "rst(1)" List12 adlı listbox' ta da varsa ekleme yapmayacak, bu listbox' ta yoksa ekleme yapacak.


Kod:
..........
son = Me.List12.ListCount
 rst.MoveFirst

     While Not rst.EOF

st = rst(1) & " - " & rst(2) & " - " & rst(0)

 For j = 0 To son - 1
sn = Me.List12.Column(1, j)
If sn <> rst(1).Value Then

Me.List132.AddItem st

End If
Next j
..........

İyi Çalışmalar.
 
list132 yi dolduracak olan sorgunu, list12 deki elemanlar&#305; almayacak &#351;ekilde d&#252;zenle o halde.

(Dikkat. Hala kod k&#305;sm&#305;na gerek yok)
 
list132 yi dolduracak olan sorgunu, list12 deki elemanları almayacak şekilde düzenle o halde.

(Dikkat. Hala kod kısmına gerek yok)

Nasıl yapacağız bu işi? Kısaca anlatabilirmisin?

Teşekkürler,
 
ya &#246;rne&#287;i ekle ya da list12 nin sorgusunu ver.
 
Kod:
.............
strSQL = "SELECT * FROM [tblPlan_1]"

 strSQL = strSQL & "WHERE ((([tblPlan_1].[No]) Like '*" & txtSearchString & "'))"
   
Me!List12.RowSource = strSQL
.............

Yalnız burada sorgulamanın yapıldığı tablolar farklı,
List12 >>>> [tblPlan_1]
List132 >>>> [Kişiler]
İyi Akşamlar.
 
&#199;ok kolay bi &#351;eyi zorla&#351;t&#305;rd&#305;k&#231;a zorla&#351;t&#305;r&#305;yorsun.

&#214;rne&#287;i eklemeden olmayacak bu i&#351;. &#199;&#252;nk&#252; tam olarak anlatam&#305;yorsun.

farkl&#305; tablolardan veri almak &#246;nemli de&#287;il.

list12 nin sorgusu sorgu 1 olsun diyelim.

list132 nin sorgusu da sorgu2 olsun diyelim.

list12 sorgusunun sonuna

Kod:
and sirano not in (sorgu2)

Tek dikkat etmen gereken, sorgu2 nin select inde sadece sirano olacak.

bukadar basit.
 
Sn yeni54 ilgi ve alakanıza teşekkürler....
Kod:
and sirano not in (sorgu2)
yarın bunu deneyeceğim,
Yalnız kafama takıldı;
Tek dikkat etmen gereken, sorgu2 nin select inde sadece sirano olacak.
bukadar basit.
Bu durumdan kastınız;
Kod:
"SELECT * FROM Kişiler WHERE SiraNo=.......
yerine;
Kod:
"SELECT SiraNo FROM Kişiler WHERE SiraNo=.......
mudur?

Bu durumda listbox ta sadece "sirano" mı (tek alan) listelenecek?

Teşekkürler, İyi Çalışmalar.
 
Hay&#305;r

sorgu 1 olarak adland&#305;r&#305;lan sorgunun select ine dokunmayacaks&#305;n.

..... and sirano not in (select sirano from ...... where ......)

deki select de&#287;i&#351;ecek sadece.

Bu sorgu &#351;unu diyor:

sorgu1 deki kay&#305;tlar&#305; al. Ancak, sorgu1 den gelen sirano bilgisi e&#287;er sorgu2 den gelen sirano lar&#305;n i&#231;inde mevcutsa bunu alma.

(burada sorgu2, not in c&#252;mlesinden sonra gelen parantez i&#231;indeki sorgu)
 
Sn yeni54 ilginize tekrar tekrar teşekkürler....
Günboyu yoğun olduğum için uğraşamadım,

Örnek olmadan ben bu işin içinden çıkamayacağım.

Şu an bir örnek ekliyorum.

burada list132 ye veri aktarırken önce (List12) ye bakacak;
eğer aktarılacak değerler List12 de varsa ekleme yapmayacak, List12' de yoksa ekleme yapacak.

Bu örnekte oluşturabilirsen çok sevineceğim.

İyi Çalışmalar, İyi Akşmalar.
 
Sayın tamer42,

Uygulamanızı indirdim ama tam olarak ne yapmak istediğinizi anlayamadım. İki tane tablonuz var, iki liste kutunuz ve bir metin kutunuz. İşlem sırası nasıl olacak?

Metin kutusuna bir sıra no yazıldıktan sonra ne olacak?

:???:
 
Sn Modalı,
Bu sorgu;
Kod:
strSQL = strSQL & "WHERE (([tblPlan_1].[Adı]) Like '" & txtSearchString & "*') "
Metin kutusuna yazılan harfle(lerle) başlayan adları "List12" üzerine aktarıyor.
daha sonra;
Kod:
 strSQL2 = strSQL2 & "WHERE (([Kişiler].[SıraNo]) like '" & txtAra & "*') "
bu sorguyu çalıştırıp "Kişiler" tablosundan "1" ile başlayan numaraları "List132" üzerine listeleyecek. buraya kadar herşey normal.

Şimdi ben ne Yapmak istediğimi bir Örnekle açıklamaya çalışayım;
Textbox' a "a" yazdığımda "List12" üzerine ("ahmet" ve "ali") geliyor.
bu sırada "List132" üzerine gelmesi gereken ("ahmet" ve "ali") içeren satırlar gelmesin, bunlar zaten "List12" üzerinde var.
"List12" üzerinde olmayan adları içeren ve noları "1" ile başlayan satırlar "List132" ye gelsin.

Aslında yukarıda yeni54 arkadaşım bununla ilgili olarak çözüm vermişti, yalnız ben birtürlü uyarlayamadım.

Teşekkürler, İyi Çalışmalar.
 
Peki 2 ile başlayanların gelme ihtimali yok mu? Onlar hiç mi görünmeyecek?


Bir de şu kodları bir deneyin 1 ve 2 ihtimali dışındaki görünümü sağladım:

Kod:
Option Compare Database
Option Explicit
Private Sub TextBox4_Updated(Code As Integer)
Dim strSQL2 As String
Dim txtSearchString As Variant
Dim strSQL As String
Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim strAd As String
txtSearchString = Me![TextBox4]
  If Not IsNull(Me![TextBox4]) Then
  
    strSQL = "SELECT * FROM [tblPlan_1] "
    strSQL = strSQL & "WHERE [tblPlan_1].[Adı] Like '" & txtSearchString & "*';"
 End If
  Set cnn = CurrentProject.Connection
  rst.Open "SELECT * FROM [tblPlan_1] WHERE [tblPlan_1].[Adı] Like '" & txtSearchString & "%';", cnn, 3, 1
If rst.RecordCount <> 0 Then
    strAd = "[Kişiler].[Adı]<>'" & rst(1) & "'"
End If
Do Until rst.EOF
    strAd = strAd & " AND [Kişiler].[Adı]<>'" & rst(1) & "'"
    rst.MoveNext
Loop
rst.Close
Set cnn = Nothing

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    
  strSQL2 = "SELECT * FROM [Kişiler] "
  
  strSQL2 = strSQL2 & "WHERE " & strAd & ";"
  
Me!List12.RowSource = strSQL
Me!List132.RowSource = strSQL2
End Sub
 
Problem sadece 1 ile başlayanlar ise strSQL2 yi şu şekilde değiştirin:

Kod:
strSQL2 = "SELECT * FROM [Kişiler] "
  
  strSQL2 = strSQL2 & "WHERE " & strAd & " AND Kişiler.SıraNo Like '1*';"

İyi çalışmalar
 
Ekteki örneği incele.

list12 ve list132 nin özelliklerden kayıt kaynaklarına bak.

Şartları istediğin gibi zenginleştirebilirsin.

Ben sadece list12 de olanları list132 ye almamasını sağladım.

sen istersen 1 ile başlayanları al de istersen onu da alma de.

ne dersen de yani.
 
Şimdi baktım da, m harfine basınca list132 ye m ile başlayan hiç kayıt gelmiyor.
Halbuki list12 de mustafa var sadece. list132 içinde mustafa olmasın diğer m ile başlayanlar olsun dersen eğer list132 nin kayıt kaynağını

Kod:
SELECT Kişiler.[No], Kişiler.SıraNo, Kişiler.Adı, Kişiler.Soyadı, Kişiler.Adres
FROM Kişiler
WHERE (((Kişiler.Adı) Not In (SELECT  tblPlan_1.Adı FROM tblPlan_1 WHERE (((tblPlan_1.Adı) Like [forms]![form2]![textbox4] & "*")) )));

olarak değiştir.
 
her ikinize teşekkürler, Yarın her iki kodu da deneyeceğim.

Bu arad bende aşağıdaki şekilde bir kod oluşturdum, bir sorun görünmüyor gibi,
Ne dersiniz? Görüşleriniz benim için çok değerlidir.

Kod:
.............
txtSearchString = Me![TextBox4]
  If Not IsNull(Me![TextBox4]) Then
  
    strSQL = "SELECT * FROM [tblPlan_1] "
    strSQL1 = "WHERE (([tblPlan_1].[Adı]) Like '" & txtSearchString & "*') "
    strSQL = strSQL & strSQL1
   
 End If

Me!List12.RowSource = strSQL
SN = Me.List12.Column(0, 0)
Me.Label46.Caption = SN

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
txtAra = SN

strSQL4 = "SELECT [Adı] FROM [tblPlan_1] "
  strSQL2 = "SELECT * FROM [Kişiler] "
  strSQL3 = strSQL4 & strSQL1
  strSQL5 = "WHERE (([Kişiler].[SıraNo]) like '*" & txtAra & "*')"
  
  strSQL2 = strSQL2 & strSQL5 & "and ([Kişiler].[Adı])not in (" & strSQL3 & ")"


Me!List132.RowSource = strSQL2

İyi Geceler.
 
Geri
Üst