ADO ve Invalid object name Hatası

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
pentiumkivanc
Üye
Mesajlar: 350
Kayıt: 19 Şub 2004 10:24
İletişim:

Mesaj gönderen pentiumkivanc »

Selamlar;
Ben MS-SQL server da daha önceden oluşturulmuş bir veritabanına bağlantı kurmaya ve üzerinde işlem yapmaya çalışıyorum. Bunu ADO bileşenlerini kullanarak yapmaya çalışıyorum formun üzerine bir adet ADOConnection nesnsi koydum sanırım işe ilk önce connectionstringi oluşturarak başlamalıyım. Connectionstringi gelen sihirbaz ile şöyle oluşturdum:

Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;User ID=sa;Initial Catalog=BENIMDATA;Data Source=SUNUCU;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=SUNUCU;Use Encryption for Data=False;Tag with column collation when possible=False

ve bağlantıyı başarılı bir şekilde gerçekleştirdi. Ardından yine ADOConnection nesnesinin DefaultDatabase sini BENIMDATA şeklinde ayarladım. (Benimdata kelimesini misal olarak kullandım)
Daha sonra formun üzerine bir adet ADOquery nesnesi koydum. Onunda SQL cümlesini "select * from TABLOÖRNEK" şeklinde yaptım. ADOQuery sorgusunun active özelliğini true yapmaya çalışınca

Invalid object name "TABLOÖRNEK"

şeklinde hata verdi. Doğrusu MS-SQL ve ADO konusunda çok yeniyim bu MS-SQL deki verileri bağlanıp kullanmanın bir yolu yokmu bana bu konuda çok basit de olsa program örneği verebilecek hiç kimse yokmu? Çünkü Interbase üzerine olduğu kadar MS-SQL altında detaylı türkçe döküman çok kısıtlı. Bu işi temelden anlatan bilgi arıyorum. Yardımcı olursanız sevinirim

Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7526
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Selam,

sorunuzu diğer mesajdan ayırdım. Eğer direk o konuyla alakalı değilse başka bir başlık şeklinde sormak daha iyi olur.

Sorunuza gelince, birincisi o isimde bir tablo, view vs. olmayabilir. Onu bir kontrol edin.

İkincisi de tablo isminde Türkçe karakter var (Ö). Bunu O yapıp bir deneyin. Bu tip isimlendirme de Türkçe karakterlerden (ı, İ, ğ, ş, ç, ü) kaçının.

Kolay gelsin.

Kullanıcı avatarı
pentiumkivanc
Üye
Mesajlar: 350
Kayıt: 19 Şub 2004 10:24
İletişim:

Mesaj gönderen pentiumkivanc »

ÖRNEKTABLO kelimesini örnek olarak verdim veritabanının veya tabloloarın içinde türkçe karakter yok

Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7526
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

bir ADOTABLE bileşeni koyup, ADOConnection'a bağlayın ve Table Name özelliğini bir açın. Orda kullanabileceğiniz tabloların listesi çıkacaktır. Tablo isimlerini orda gördüğünüz gibi yazın.

Mesela dbo.TABLOORNEK ise o şekilde yazın.

SELECT * FROM dbo.TABLOORNEK

gibi.

Kolay gelsin.

Kullanıcı avatarı
pentiumkivanc
Üye
Mesajlar: 350
Kayıt: 19 Şub 2004 10:24
İletişim:

Mesaj gönderen pentiumkivanc »

Tekrar merhabalar
Az önce tablo olayını denedim evet bahsettiğiniz gibi tabloların isimleri çıktı seçip tabloyu aktif yapmaya çalışınca yine Invalid object name hatası devam etti. Acaba MS-SQL serverdaki yetki ile iligli bir problem olması mümkün mü?

Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7526
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

hocam görmeden çok fazla yardımcı olamıyorum ama birkaç şeyi kontrol edip denemeniz faydalı olur :

1. Tabloları Enterprise manager'da açıp, select * ile satırları görebiliyor musunuz?

2. Tablo isimleri SQL Server'da özel manaya gelen kelimelerden olmasın. reserved words diye aratıp, bir bakın onlar içinden olmasın. Mesela NOT gibi. NOT özel menası olan bir kelimedir.

3. Tablo ismini [] köşeli parantez içinde yazıp bir deneyin.

SELECT * FROM [TABLOORNEK]

gibi.

Kolay gelsin.

Kullanıcı avatarı
pentiumkivanc
Üye
Mesajlar: 350
Kayıt: 19 Şub 2004 10:24
İletişim:

Mesaj gönderen pentiumkivanc »

Enterprinse manageri açtım ve veritabanı owner kısmında dbo değil "FIN" yazıyor. acaba owner ile ilgili bir sorun olabilirmi. Çünkü "select * from ORNEKTABLO" yazınca queryanalyzer içinde de aynı hatayı veriyor

Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Ozaman

Kod: Tümünü seç

select * from FIN.ORNEKTABLO
olarak yapın

Kullanıcı avatarı
pentiumkivanc
Üye
Mesajlar: 350
Kayıt: 19 Şub 2004 10:24
İletişim:

Mesaj gönderen pentiumkivanc »

Evet sorunu düzelttim çok teşekkürler.

nodetail
Üye
Mesajlar: 53
Kayıt: 04 Eki 2008 10:30

Re: ADO ve Invalid object name Hatası

Mesaj gönderen nodetail »

Selamlar,
benzer bi problemim var bir sql server kurdum ve başka serverdaki veritabanımı buraya aldım. ancak daha önce çalışan programım yeni serverda çalışmıyor. bütün tablo bağlantılarım select * from TABLO olarak geçmektedir. ama şimdiki veritabanımda select * from sitem.TABLO yazarsam çalışıyor programımın bütün kodlarını değiştiremeyeceğime göre bu sitem schemas 'ını nasıl default yapabilirim. yani ben sadece select * from TABLO yazarak çalışmasını istiyorum bunu nasıl sağlarım sql server 2005 enterprise kullanıyorum. Şimdiden teşekkürler.

Ertugrul
Üye
Mesajlar: 136
Kayıt: 09 May 2009 12:05

Re: ADO ve Invalid object name Hatası

Mesaj gönderen Ertugrul »

nodetail yazdı:Selamlar,
benzer bi problemim var bir sql server kurdum ve başka serverdaki veritabanımı buraya aldım. ancak daha önce çalışan programım yeni serverda çalışmıyor. bütün tablo bağlantılarım select * from TABLO olarak geçmektedir. ama şimdiki veritabanımda select * from sitem.TABLO yazarsam çalışıyor programımın bütün kodlarını değiştiremeyeceğime göre bu sitem schemas 'ını nasıl default yapabilirim. yani ben sadece select * from TABLO yazarak çalışmasını istiyorum bunu nasıl sağlarım sql server 2005 enterprise kullanıyorum. Şimdiden teşekkürler.
connection string'e default schema=sitem; yazarak olur. ama benim tavsiyem sitem isimli yeni bir user acarak onun default schema sini sitem yapmak.

nodetail
Üye
Mesajlar: 53
Kayıt: 04 Eki 2008 10:30

Re: ADO ve Invalid object name Hatası

Mesaj gönderen nodetail »

bende tam bunu yapmak istiyorum ama açtığım yeni kullanıcıların default schema'sı sitem olmasına rağmen sanıyorum user açarken bir hata yapıyorum sorun çözülmüyor. bunu tam olarak nasıl yapabileceğimi anlatabilir ve/veya bir yazılı yre yönlendirebilirseniz çok sevinirim.

Ertugrul
Üye
Mesajlar: 136
Kayıt: 09 May 2009 12:05

Re: ADO ve Invalid object name Hatası

Mesaj gönderen Ertugrul »

Kod: Tümünü seç

create login sitem with password = 'asdsadsad'
create user sitem with default_schema = sitem

nodetail
Üye
Mesajlar: 53
Kayıt: 04 Eki 2008 10:30

Re: ADO ve Invalid object name Hatası

Mesaj gönderen nodetail »

malesef sorun bu şekilde çözülmedi :(

Ertugrul
Üye
Mesajlar: 136
Kayıt: 09 May 2009 12:05

Re: ADO ve Invalid object name Hatası

Mesaj gönderen Ertugrul »

ilginç. management studio'da sitem userıyla sorgulama yapmayı denediniz mi peki? management studio da userın özelliklerini değiştirirseniz çözülür gibime geliyor. bu arada management studionun arka planda yaptığını görmek için script butonuna tıklayabilirsiniz.

Cevapla