insert tarih (Kısmen Çözüldü)

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
deltas
Üye
Mesajlar: 358
Kayıt: 06 Mar 2004 01:08
Konum: Malatya...
İletişim:

insert tarih (Kısmen Çözüldü)

Mesaj gönderen deltas »

Merhaba arkadaşlar.
Sorunnum MSSQL'de tarih bilgisini insert etmek. Bi türlü içeriye bilgileri göndermeyi beceremedim. forumada arama yaptım ancak daha önce tartışılmışta orada söylenenler hep select için. İnsertte onlar deneedim, beceremedim hep hata aldım (convert komutu ile yapılanda). Kullandığım kod aşşağıdaki gibi nasıl yapabilirim. Yardımcı olursanız memnun olurum.

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
begin
with ADOQuery1 do
begin
Active;
SQL.Clear;
sql.add('insert into  kimlik (tckimlik,adi,soyadi,tarih)');
sql.add('values(  :tcno , :ad, :soyad, :tarih )');
Parameters.ParamByName('ad').Value:=Edit1.Text;
Parameters.ParamByName('soyad').Value:=edit2.text;
Parameters.ParamByName('tcno').Value:=edit3.text;
Parameters.ParamByName('tarih').Value:=strtodate(edit4.Text);
ExecSQL;
end;
end;
En son deltas tarafından 19 Haz 2007 10:54 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Nice İnsanlar gördüm üstünde elbise yok;
Nice elbiseler gördüm içinde insan yok.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
verdiği hata mesajı ney?
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Mesaj gönderen conari »

db deki tarih alanın özellikleri ile ilgili olabilir.
veya edit4 de tarih / kullarak girilmiş olabilir. v.s. Hata mesajını görmek en iyisi.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
deltas
Üye
Mesajlar: 358
Kayıt: 06 Mar 2004 01:08
Konum: Malatya...
İletişim:

Mesaj gönderen deltas »

[ODBC] isteğe bağlı işllem uygulanamadı
şeklinde bi hata alıyorum. tarih alanına bilgi girmediğimde sorun yok. Sorun tarih alanına girmeye çalıştığım bilgide. Oraya insert yapmaya çalıştığımda hata veriyor. o field'in özelliğide datetime olarak ayarlanmış (smalldate şeklinde yaraladığımdada aynı hatayı alıyorum). Edit4.text yerine datetimepicker.date kullandığımda da hatayı alıyorum. MSSQL'de date bilgisini insert ederken başka bi şekilde formatlamamız mı lazım?
İlginize teşekkür ederim.
Nice İnsanlar gördüm üstünde elbise yok;
Nice elbiseler gördüm içinde insan yok.
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Mesaj gönderen conari »

datetime alanda problem olmaması lazım
MMSql de tarih biçimini nasıl ayarladınız.
datanın içini açıp bakın format nasıl ?Sanırım YYYY-AA-GG

şeklinde ,siz de bu formatta kayıt gönderin.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
deltas
Üye
Mesajlar: 358
Kayıt: 06 Mar 2004 01:08
Konum: Malatya...
İletişim:

Mesaj gönderen deltas »

hocam formatı dd.mm.yyyy şeklinde. manuel girişlerde bunu kabul ediyor. ancak ben edit4.text'te bu şekilde yazdığımda veta datetimepicker.date ile bilgiyi ado ile insert ederken bana
[microsoft][ODBC sql server driverr] isteğe bağlı özellik uygulanmadı
şeklinde hata almaya devam ediyorum.
Nice İnsanlar gördüm üstünde elbise yok;
Nice elbiseler gördüm içinde insan yok.
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Mesaj gönderen conari »

Exec etmeden önce
oluşan Sql cümlesini copyalayıp Query analayzer da manuel çalıştırın.
aynı sorunu verecek mi?
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
deltas
Üye
Mesajlar: 358
Kayıt: 06 Mar 2004 01:08
Konum: Malatya...
İletişim:

Mesaj gönderen deltas »

query de hata almadım.
Nice İnsanlar gördüm üstünde elbise yok;
Nice elbiseler gördüm içinde insan yok.
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Mesaj gönderen conari »

Aklıma başka bir şey gelmiyor açıkçası
Parametrelerin önceden var olan sabit bir değeri varmı buna bakın veya parametre kullanmadan sqli oluşturup exec edin :roll:
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
deltas
Üye
Mesajlar: 358
Kayıt: 06 Mar 2004 01:08
Konum: Malatya...
İletişim:

Mesaj gönderen deltas »

Sorunu kısmen çözdüm. Ancak halen neden parametre ile atamda sorun çıkardığını anlamadım.

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
begin
with ADOQuery1 do
begin
Active;
SQL.Clear;
sql.add('insert into  kimlik (tckimlik,adi,soyadi,tarih)');
sql.add('values( :ad,:soyad,:tcno,'''+edit4.Text+''' )');
Parameters.ParamByName('ad').Value:=Edit1.Text;
Parameters.ParamByName('soyad').Value:=edit2.text;
Parameters.ParamByName('tcno').Value:=edit3.text;
Nice İnsanlar gördüm üstünde elbise yok;
Nice elbiseler gördüm içinde insan yok.
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

ParamCheck i False ve Prepared i True yapıp dene.
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
deltas
Üye
Mesajlar: 358
Kayıt: 06 Mar 2004 01:08
Konum: Malatya...
İletişim:

Mesaj gönderen deltas »

Hocam olmadı. çalışmadı. Bu seferde not found 'ad' parameter diye bi hata verdi.
Nice İnsanlar gördüm üstünde elbise yok;
Nice elbiseler gördüm içinde insan yok.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

Ben parametrelerden oldum olası uzak dururum. Ne de olsa variant. Pek güven olmaz bunlara. Gerçi çevremde bununla sorunsuz çalışanlar var ama ben uzak duruyorum. Bu kişisel tercihim diyelim geçelim. Tarih alanı ile ilgili işlemlerim için Connection nesnesinin AfterConnection olayında

Kod: Tümünü seç

set quoted_identifier on
set dateformat dmy
şeklinde ayarımı yaparım. Eğer connection nesnesi kullanmıyorsan da o zaman biden fazla komutu tek exec içinde çalıştırabilirsin.

Kod: Tümünü seç

ADOQuery1.Execute('set dateformat dmy insert into tbl (tarih) values (''31.12.2006'')');
gibi. Kolay gelsin.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Belki veri tiplerine dikkat ederek özellikle tarih formatına, parametrik değil de sql i oluştururken

Kod: Tümünü seç

...
sql.add('insert into  kimlik (tckimlik,adi,soyadi,tarih)');
sql.add('values( ' + Edit1.Text + ', ' + Edit2.Text + ', ' + Edit3.Text + ', ' + Edit4.Text + ')');
ExecSQL; 
şekli daha sorunsuz olabilir :wink:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Mesaj gönderen conari »

deltas yazdı:Sorunu kısmen çözdüm. Ancak halen neden parametre ile atamda sorun çıkardığını anlamadım.

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
begin
with ADOQuery1 do
begin
Active;
SQL.Clear;
sql.add('insert into  kimlik (tckimlik,adi,soyadi,tarih)');
code][/quote] 
Gözden kaçmış ama,
buradaki [u][b]active;[/b][/u] kodunuda bir kaldır istersen :lol:  :wink:
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Cevapla