Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

Tarihe gore veri cagirma

Konu, 'ASP' kısmında efet tarafından paylaşıldı.

  1. efet

    efet Aktif Üye

    Kayıt:
    3 Mart 2007
    Mesajlar:
    329
    Beğenilen Mesajlar:
    0
    Hazirladigim kodlarin bir yerinde gidilen tarihe gore veritabanindan veri getirsin istiyorum. Asagidaki sekilde denedim ama olmadi.

    Kod:
    <% 
    TARIH=Request.QueryString("TARIH")
    If TARIH="" Then  
    response.redirect("?TARIH="&Date()&"" )  
    End If  
    %> 
     
    ---
     
    <%
     Set objNews = Server.CreateObject("ADODB.RecordSet")
     objNews.Open "SELECT TOP 5 * FROM NEWS WHERE [B]DATE= '"&TARIH&"'[/B] STATUS=True AND HEADLINE=False ORDER BY DATE DESC", objConn, 1, 3
    %>
    
    
     
  2. djinn

    djinn Aktif Üye

    Kayıt:
    19 Aralık 2006
    Mesajlar:
    313
    Beğenilen Mesajlar:
    0
    Meslek:
    turizm / öğrenci
    Şehir:
    izmir
    hata mı veriyor veya ekrana verimi getirmiyor.

    belki de veritabanındaki kayıt tipi ile site sunucusundaki tarih/saat tipi uyuşmuyordur..
     
  3. nbakolik

    nbakolik Aktif Üye

    Kayıt:
    8 Nisan 2007
    Mesajlar:
    480
    Beğenilen Mesajlar:
    0
    Meslek:
    Web Geliştirici
    Şehir:
    Denizli
    Tarih işlemlerinde DATE= #"&TARIH&"# şeklinde kullanman gerekir. Ayrıca tarihinde ingilizce formatlı olması gerekmektedir. "." yerinde "/" kullanılmış olmalıdır...
     
  4. djinn

    djinn Aktif Üye

    Kayıt:
    19 Aralık 2006
    Mesajlar:
    313
    Beğenilen Mesajlar:
    0
    Meslek:
    turizm / öğrenci
    Şehir:
    izmir
    ben # kullanmadan da veri çekebiliyorum. onun bir gerekliliği yok. ama veri tipi uyuşmazlığı bence sorun... seninde dedigin gibi..
     
  5. nbakolik

    nbakolik Aktif Üye

    Kayıt:
    8 Nisan 2007
    Mesajlar:
    480
    Beğenilen Mesajlar:
    0
    Meslek:
    Web Geliştirici
    Şehir:
    Denizli
    Veritabanında tarih alanı metin formatlı ise # kullanmadan işlemler yapılabilir ama tarih saat formatındaysa benim bildiğim kadarıyla kullanmak gerekiyor.... Veri tabanına kayıt edilecek tarihlerde eğer işlem yapılacaksa tarih/saat türünde olmasında yarar var...
     
  6. efet

    efet Aktif Üye

    Kayıt:
    3 Mart 2007
    Mesajlar:
    329
    Beğenilen Mesajlar:
    0
    Asagidaki hatayi aliyorum. # isaretini kullanmayinca onsuz sekilde ayni hatayi aliyorum. Veritabanina tarih kayit edilirken tarih/saat formatinda kayit ediliyor yani su sekilde: 2/7/2008 11:43:13


    Microsoft JET Database Engineerror '80040e14'
    Syntax error (missing operator) in query expression 'DATE= #'02/07/2008'# STATUS=True AND HEADLINE=False'. /default.asp, line 42
     
  7. nbakolik

    nbakolik Aktif Üye

    Kayıt:
    8 Nisan 2007
    Mesajlar:
    480
    Beğenilen Mesajlar:
    0
    Meslek:
    Web Geliştirici
    Şehir:
    Denizli
    ' işaretleri yerine # kullanıcaksın sen ikisini birden kullanmışsın...
     
  8. efet

    efet Aktif Üye

    Kayıt:
    3 Mart 2007
    Mesajlar:
    329
    Beğenilen Mesajlar:
    0
    ' ya da # hic farketmiyor, hep ayni hatayi aliyorum. Veri veritabanina kayit edilirken saati de kayit ediyor. Bununla ilgisi olabilir mi?
     
  9. efet

    efet Aktif Üye

    Kayıt:
    3 Mart 2007
    Mesajlar:
    329
    Beğenilen Mesajlar:
    0
    Ayni hatayi aliyorum dedim ama meger sanirim hafizada kayitli oldugundan ayni hatayi almisim. Simdi denedim, hic bir hata almiyorum ama bu sefer de alan bos geliyor. Biraz once yeni veri girisi yaptim. Ama hem /?TARIH=03/07/2008 hem de /?TARIH=07/03/2008 denememe ragmen veriyi almadi.
     
  10. PiYoNASP

    PiYoNASP Aktif Üye

    Kayıt:
    30 Temmuz 2004
    Mesajlar:
    485
    Beğenilen Mesajlar:
    0
    03 ü 04 yapmayı denedin mi?
     
  11. demo

    demo Aktif Üye

    Kayıt:
    28 Eylül 2006
    Mesajlar:
    372
    Beğenilen Mesajlar:
    0
    Meslek:
    Çalış(a)mıyor
    Şehir:
    34770
    Aşağıdaki örneklemeye göre yardımcı bi fonksiyon kullanarak dener misiniz? Yardımcı fonksiyon ilgili veriyi uygun tarih formatına çevirmektedir.
    Kod:
    <%
    TARIH=Request.QueryString("TARIH")
    If TARIH="" Then
    response.redirect "?TARIH="&Date() 
    End If
    %>
    
    ---
    
    <%
    [COLOR="Blue"]function karakapli_tarih_formatla(gelen)
    if isdate(gelen) then
    karakapli_tarih_formatla = year(gelen) & "/" & month(gelen) & "/" & day(gelen)
    if len(gelen) > 10 then
    karakapli_tarih_formatla = karakapli_tarih_formatla & " " & right(gelen, 8)
    end if
    else
    karakapli_tarih_formatla = gelen
    end if
    end function
    Set objNews = Server.CreateObject("ADODB.RecordSet")
    objNews.Open "SELECT TOP 5 * FROM NEWS WHERE DATE=[COLOR="red"]#" & [COLOR="red"]karakapli_tarih_formatla(TARIH) & "[COLOR="red"]# STATUS=True AND HEADLINE=False ORDER BY DATE DESC", objConn, 1, 3
    %>
     
  12. efet

    efet Aktif Üye

    Kayıt:
    3 Mart 2007
    Mesajlar:
    329
    Beğenilen Mesajlar:
    0
    Pes yani bir olayi 1 haftadir beceremedim. Demo, dedigin gibi deneyince su hatayi aliyorum:



    Microsoft JET Database Engineerror '80040e14'
    Syntax error (missing operator) in query expression 'DATE=#2008/7/3# STATUS=True AND HEADLINE=False'. /default.asp, line 52
     
  13. demo

    demo Aktif Üye

    Kayıt:
    28 Eylül 2006
    Mesajlar:
    372
    Beğenilen Mesajlar:
    0
    Meslek:
    Çalış(a)mıyor
    Şehir:
    34770
    Veritabanınızdaki TARIH adlı alanınız "Tarih/Saat" özellikli değil mi?
    Bir de # yerine ' karakteri ile dener misiniz?
    Kod:
    objNews.Open "SELECT TOP 5 * FROM NEWS WHERE DATE='" & karakapli_tarih_formatla(TARIH) & "[COLOR="red"]' STATUS=True AND HEADLINE=False ORDER BY DATE DESC", objConn, 1, 3
    Access veritabanılarında # ya da ' karakteri ile sorun yaşamadan kullanıyorum. MySql veritabanında ise ' karakteri ile kullanıyorum.
     
  14. efet

    efet Aktif Üye

    Kayıt:
    3 Mart 2007
    Mesajlar:
    329
    Beğenilen Mesajlar:
    0
    tarih/saat. Onu da denedim sonuc ayni. Ama mesela WHERE DATE > date() denersem sadece bugunun haberlerini gostertebiliyorum.
     
  15. demo

    demo Aktif Üye

    Kayıt:
    28 Eylül 2006
    Mesajlar:
    372
    Beğenilen Mesajlar:
    0
    Meslek:
    Çalış(a)mıyor
    Şehir:
    34770
    Az önce accesste (2007) örnek fonksiyon ile deneme yaptım, ' tırnak ile aynı hatayı verdi, # ile çalıştı. Ancak sizdeki hata mesajında hatalı kısmı
    'DATE=#2008/7/3# STATUS=True AND HEADLINE=False'
    olarak gösteriyor. Arada AND komutu eklemeyi atlamışız. :)
    Kod:
    objNews.Open "SELECT TOP 5 * FROM NEWS WHERE DATE=[COLOR="red"]#" & karakapli_tarih_formatla(TARIH) & "[COLOR="red"]# AND STATUS=True AND HEADLINE=False ORDER BY [COLOR="red"]ID DESC;", objConn, 1, 3
    olarak dener misiniz?
     
  16. efet

    efet Aktif Üye

    Kayıt:
    3 Mart 2007
    Mesajlar:
    329
    Beğenilen Mesajlar:
    0
    Artik dikkat de kalmamis, AND i koyunca hata kayboldu ancak sorunum hala devam ediyor. Veritabanindan veri getirmek hic bir sey getirmiyor, hata da vermiyor.
     
  17. GooKaa

    GooKaa Üye

    Kayıt:
    18 Mart 2007
    Mesajlar:
    227
    Beğenilen Mesajlar:
    0
    Tarih ile status arasina ve baglacini koymamissin. Bu yuzden komut satirin hata veriyor.
     
  18. demo

    demo Aktif Üye

    Kayıt:
    28 Eylül 2006
    Mesajlar:
    372
    Beğenilen Mesajlar:
    0
    Meslek:
    Çalış(a)mıyor
    Şehir:
    34770
    Veritabanınızda DATE alanındaki veriler "Genel Tarih" biçimli ise (04.07.2008 16:50:43 gibi) sorun çıkıyor olabilir. Bu alanın özelliğini "Kısa Tarih" olarak (04.07.2008 gibi) değiştirmek çözüm olabilir. Ya da biçimi değiştirmeden ek kodlar kullanmakta çözüm olabilir.
    Ayrıca sorgunuzdaki TOP X komutu sorgulanan kayıtlar içinde aynı değere sahip olduğunda (birden fazla alanda) da sorun çıkabilir. TOP X yerine do loop ya da for next döngüsü ile istediğiniz sayıda kayıt çekmeyi denebilirsiniz.
    Aşağıdaki kodlar accesste tarih alanları için örnek olabilir. Dosyaları indirerek deneyebilirsiniz.
    Kod:
    <%@ language="vbscript" codepage="1254" lcid="1055"%><%
    option explicit
    response.charset = "iso-8859-9"
    function karakapli_tarih_formatla(gelen)
    gelen = trim(gelen)
    if isdate(gelen) then
    karakapli_tarih_formatla = year(gelen) & "/" & month(gelen) & "/" & day(gelen)
    if len(gelen) > 10 then
    karakapli_tarih_formatla = karakapli_tarih_formatla & " " & right(gelen, 8)
    end if
    else
    karakapli_tarih_formatla = gelen
    end if
    end function
    dim vtb, ks, sql1, sql2, sql3, sql4, sql5, sql6, islem, tarih, topx
    set vtb = server.createobject("adodb.connection")
    vtb.open "provider=microsoft.jet.oledb.4.0; data source=" & server.mappath("tarih.mdb") & ";"
    sql1 = ""
    sql2 = ""
    sql3 = ""
    sql4 = ""
    sql5 = ""
    sql6 = ""
    islem = request.querystring("islem")
    tarih = request.querystring("tarih")
    topx = request.querystring("topx")
    if topx = "" then
    topx = 2
    end if
    if islem = "" then
    sql1 = "select count(*) from tablo;"
    sql2 = "select * from tablo order by tarih desc;"
    sql3 = "select count(*) from tablo;"
    sql4 = "select * from tablo order by tarih2 desc;"
    sql5 = "select top " & topx & " * from tablo order by tarih desc;"
    sql6 = "select top " & topx & " * from tablo order by tarih2 desc;"
    else
    sql1 = "select count(*) from tablo where tarih" & islem & "#" & karakapli_tarih_formatla(tarih) & "# and onay=0;"
    sql2 = "select * from tablo where tarih" & islem & "#" & karakapli_tarih_formatla(tarih) & "# and onay=0 order by tarih desc;"
    sql3 = "select count(*) from tablo where tarih2" & islem & "#" & karakapli_tarih_formatla(tarih) & "# and onay=0;"
    sql4 = "select * from tablo where tarih2" & islem & "#" & karakapli_tarih_formatla(tarih) & "# and onay=0 order by tarih2 desc;"
    sql5 = "select top " & topx & " * from tablo where tarih" & islem & "#" & karakapli_tarih_formatla(tarih) & "# and onay=0 order by tarih desc;"
    sql6 = "select top " & topx & " * from tablo where tarih2" & islem & "#" & karakapli_tarih_formatla(tarih) & "# and onay=0 order by tarih2 desc;"
    end if
    %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "[URL]http://www.w3.org/TR/html4/loose.dtd[/URL]">
    <html>
    <head>
    <title>ASP Access Veritabanı Tarih İşlemleri</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-9">
    <meta http-equiv="Content-Language" content="tr">
    <style type="text/css">
    @charset "iso-8859-9";
    body {
    font-weight: normal;
    font-size: 11px;
    color: #000000;
    font-family:"comic sans ms";
    margin-left: 0;
    margin-top: 0;
    margin-right: 0;
    margin-bottom: 0;
    background-color: #ffffff;
    }
    a:link, a:visited, a:active {
    font-weight: normal;
    font-size: 11px;
    color: #0000ff;
    font-family: "comic sans ms";
    text-decoration: none;
    }
    a:hover {
    font-weight: normal;
    font-size: 11px;
    color: #ff0000;
    font-family: "comic sans ms";
    text-decoration: none;
    }
    td, th {
    font-size: 11px;
    color: #000000;
    font-family: "comic sans ms";
    padding-left: 3px;
    padding-right: 3px;
    padding-top: 3px;
    padding-bottom: 3px;
    }
    </style>
    </head>
    <body>
    <table align="center" border="1" cellpadding="0" cellspacing="0">
    <tr><td colspan="5"><font color="#ff0000"><b>tarih alanına göre toplam kayıt sayısı: <%
    set ks = vtb.execute(sql1)
    %><%=ks(0)%><%
    set ks = nothing
    %></b></font></td></tr><%
    set ks = vtb.execute(sql2)
    if not ks.eof then
    %><tr><th>K.No</th>
    <th>İsim</th>
    <th>Tarih</th>
    <th>Tarih 2</th>
    <th>Onay</th></tr><%
    do until ks.eof
    %><tr><td><%=ks("id")%></td>
    <td><%=ks("isim")%></td>
    <td><%=ks("tarih")%></td>
    <td><%=ks("tarih2")%></td>
    <td><%
    if ks("onay") = 0 then
    %><font color="#ff0000">Onaysız</font><%
    else
    %>Onaylı<%
    end if
    %></td></tr><%
    ks.movenext
    loop
    else
    %><tr><th colspan="5"><font color="#0000ff">Kayıt yok</font></th></tr><%
    end if
    set ks = nothing
    %>
    <tr><td colspan="5">&nbsp;</td></tr>
    <tr><td colspan="5"><font color="#ff0000"><b>tarih2 alanına göre toplam kayıt sayısı: <%
    set ks = vtb.execute(sql3)
    %><%=ks(0)%><%
    set ks = nothing
    %></b></font></td></tr><%
    set ks = vtb.execute(sql4)
    if not ks.eof then
    %><tr><th>K.No</th>
    <th>İsim</th>
    <th>Tarih</th>
    <th>Tarih 2</th>
    <th>Onay</th></tr><%
    do until ks.eof
    %><tr><td><%=ks("id")%></td>
    <td><%=ks("isim")%></td>
    <td><%=ks("tarih")%></td>
    <td><%=ks("tarih2")%></td>
    <td><%
    if ks("onay") = 0 then
    %><font color="#ff0000">Onaysız</font><%
    else
    %>Onaylı<%
    end if
    %></td></tr><%
    ks.movenext
    loop
    else
    %><tr><th colspan="5"><font color="#0000ff">Kayıt yok</font></th></tr><%
    end if
    set ks = nothing
    %>
    <tr><td colspan="5">&nbsp;</td></tr>
    <tr><td colspan="5"><font color="#ff0000"><b>Top <%=topx%> ile tarih alanına göre</b></font></td></tr><%
    set ks = vtb.execute(sql5)
    if not ks.eof then
    %><tr><th>K.No</th>
    <th>İsim</th>
    <th>Tarih</th>
    <th>Tarih 2</th>
    <th>Onay</th></tr><%
    do until ks.eof
    %><tr><td><%=ks("id")%></td>
    <td><%=ks("isim")%></td>
    <td><%=ks("tarih")%></td>
    <td><%=ks("tarih2")%></td>
    <td><%
    if ks("onay") = 0 then
    %><font color="#ff0000">Onaysız</font><%
    else
    %>Onaylı<%
    end if
    %></td></tr><%
    ks.movenext
    loop
    else
    %><tr><th colspan="5"><font color="#0000ff">Kayıt yok</font></th></tr><%
    end if
    set ks = nothing
    %>
    <tr><td colspan="5">&nbsp;</td></tr>
    <tr><td colspan="5"><font color="#ff0000"><b>Top <%=topx%> ile tarih2 alanına göre</b></font></td></tr><%
    set ks = vtb.execute(sql6)
    if not ks.eof then
    %><tr><th>K.No</th>
    <th>İsim</th>
    <th>Tarih</th>
    <th>Tarih 2</th>
    <th>Onay</th></tr><%
    do until ks.eof
    %><tr><td><%=ks("id")%></td>
    <td><%=ks("isim")%></td>
    <td><%=ks("tarih")%></td>
    <td><%=ks("tarih2")%></td>
    <td><%
    if ks("onay") = 0 then
    %><font color="#ff0000">Onaysız</font><%
    else
    %>Onaylı<%
    end if
    %></td></tr><%
    ks.movenext
    loop
    else
    %><tr><th colspan="5"><font color="#0000ff">Kayıt yok</font></th></tr><%
    end if
    set ks = nothing
    vtb.close
    set vtb = nothing
    %>
    <tr><th colspan="5"><font color="#ff0000">İşlemler</font></th></tr>
    <tr><td colspan="5">
    <form id="tarih_islemleri" name="tarih_islemleri" method="get" action="" style="display: inline;">
    <table border="0" cellpadding="0" cellspacing="0">
    <tr><td valign="top"><input type="text" id="tarih" name="tarih" value="<%=now()%>" /><br />
    <b>Top X sayısı:</b> <input type="text" id="topx" name="topx" size="5" value="<%=topx%>" /></td>
    <td><input type="radio" id="islem1" name="islem" value="<" /> Tarihinden Önceki Kayıtları<br />
    <input type="radio" id="islem2" name="islem" value="<=" /> Tarihindeki ve Önceki Kayıtları<br />
    <input type="radio" id="islem3" name="islem" value="=" /> Tarihindeki Kayıtları<br />
    <input type="radio" id="islem4" name="islem" value=">" /> Tarihinden Sonraki Kayıtları<br />
    <input type="radio" id="islem5" name="islem" value=">=" /> Tarihindeki ve Sonraki Kayıtları<br />
    <input type="radio" id="islem6" name="islem" value="" /> Tüm Kayıtları</td></tr>
    <tr><td align="right" colspan="2"><input type="submit" id="s" name="s" value="Göster" /></td></tr>
    </table>
    </form>
    </td></tr>
    </table>
    </body></html>