Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.05;
Скачать: CL | DM;

Вниз

Проблема с полями   Найти похожие ветки 

 
Рафик   (2004-08-06 11:11) [0]

У меня D7, Win 2000, MSSQL 2000 SP4, на SQL есть база с 68 полями, при подключении её в Делфях почему то часть полей теряется, что может быть подскажите.


 
Sandman25 ©   (2004-08-06 11:12) [1]

1. Какой запрос
2. Какие поля заданы в design+time


 
Рафик   (2004-08-06 11:13) [2]

Простой
Select *
From tblUnits


 
Sandman25 ©   (2004-08-06 11:14) [3]

[2] Рафик   (06.08.04 11:13)

На второй мой вопрос ответить можете?


 
Ega23 ©   (2004-08-06 11:19) [4]

при подключении её в Делфях почему то часть полей теряется,

Каким образом теряется: не выводится в грид, или ColumnCount меньше 68? Какого типа поля?


 
Рафик   (2004-08-06 11:24) [5]

Теряется в Грид, и по ColumnCount меньше, теряется поле например UnitName (50) nvarchar.


 
Рафик   (2004-08-06 11:25) [6]

2. Какие поля заданы в design+time

Не понял вопроса, такие поля присутствуют, около 10. Если я про это


 
Sandman25 ©   (2004-08-06 11:32) [7]

[6] Рафик   (06.08.04 11:25)

Двойной щелчок на гриде - есть колоник? И если есть, то все 68?
Двойной щелчок на Table/Query - есть поля? И если есть, то все 68?


 
Ega23 ©   (2004-08-06 11:36) [8]

Вообще-то странно.
Открой этот запрос через Query и ColumnCount посмотри.

И ещё: что вернёт вот такой запрос
select X=Count(*)
from syscolumns SC, sysobjects SO
where
SC.ID=SO.ID and
SO.id = object_id(N"[tblUnits]")


 
Рафик   (2004-08-06 14:24) [9]

На запрос выдает 68, я ставлю компонент DBLookupComboBox, мне нужно сделать выбор по конкретному полю UnitName (50) nvarchar, его нету в выборе, я вношу его в ручную в свойства KeyField, он говорит "Field Unit Name not found" , вот так то, а запрос то обрабатывается на сервере поэтому как бы все нормально, я пробовал на Acsess, такое же сотворить, он все видит, я в тупике.


 
Ega23 ©   (2004-08-06 14:36) [10]

Ну так и делай Select UnitID, UnitName from tblUnits. Нафига всю таблицу-то для LookupCombo тащить???


 
Рафик   (2004-08-06 14:39) [11]

Возвращается пусто, т.е. данных нет!!!


 
Ega23 ©   (2004-08-06 14:49) [12]

Так может у тебя таблица пустая?

Каков результат Select X=Count(*) from tblUnits?


 
Рафик   (2004-08-06 15:03) [13]

483


 
Ega23 ©   (2004-08-06 15:06) [14]

Возвращается пусто, т.е. данных нет!!!

Ты сам себе противоречишь. Или 483, или ничего, чудес не бывает.


 
Рафик   (2004-08-06 15:15) [15]

Нет это не я противоречу, это он противоречит, первый запрос был по конкретному полю, которого он не видит, а второй по подсчету записей, конечно, он там около 30 полей видит и в них есть запись, а поле UnitName он не видит и возвращает по нему пустое значение!!!


 
Рафик   (2004-08-06 15:23) [16]

Хотя кстати UnitID, поле заполнено,а unitName нету!!!


 
Ega23 ©   (2004-08-06 15:33) [17]

Слушай, ну не бывает чудес! Полей у тебя в таблице - 68, это из syscolumns видно. Записей в таблице - 483, это Count(*) выдаёт.
Покажи скрипт на создание таблицы, где Create Table.


 
TDK   (2004-08-06 15:40) [18]

>>есть база с 68 полями
В базе есть таблицы, а в них поля...

>>Хотя кстати UnitID, поле заполнено,а unitName нету!!!
Нету данных в поле или нет поля в таблице?


 
Рафик   (2004-08-06 15:48) [19]

В запросе данное поле не появляется!!!


 
Рафик   (2004-08-06 15:51) [20]

А я не создавал её, и у меня нет данного скрипта!


 
Sergey13 ©   (2004-08-06 15:52) [21]

У меня складывается такое ощущение (может пятница 8-), что unitName это поле из ДРУГОЙ таблицы.
Трудно искать черную кошку в темной комнате, особенно если ее там нет. (с)
8-)


 
Ega23 ©   (2004-08-06 15:53) [22]

А я не создавал её, и у меня нет данного скрипта!

Ну так сгенери, маленький что-ли? Enterprise Manager ведь у тебя есть?

В запросе данное поле не появляется!!!

Select top 1 * from .... сделай в QA  и посмотри, сколько полей вернёт.


 
Ega23 ©   (2004-08-06 15:54) [23]

У меня складывается такое ощущение

У меня тоже такое-же ощущение. Вот я и прошу скрипт на создание таблицы.


 
bushmen ©   (2004-08-06 15:57) [24]

> MSSQL 2000 SP4

Это откуда? Кажись sp3a самый последний был :)


 
Рафик   (2004-08-06 15:58) [25]

if exists (select * from dbo.sysobjects where id = object_id(N"[dbo].[tblUnitChar_FK00]") and OBJECTPROPERTY(id, N"IsForeignKey") = 1)
ALTER TABLE [dbo].[tblUnitChar] DROP CONSTRAINT tblUnitChar_FK00
GO

if exists (select * from dbo.sysobjects where id = object_id(N"[dbo].[FK_tblUnitComp_tblUnits]") and OBJECTPROPERTY(id, N"IsForeignKey") = 1)
ALTER TABLE [dbo].[tblUnitComp] DROP CONSTRAINT FK_tblUnitComp_tblUnits
GO

if exists (select * from dbo.sysobjects where id = object_id(N"[dbo].[tblUnitCondition_FK02]") and OBJECTPROPERTY(id, N"IsForeignKey") = 1)
ALTER TABLE [dbo].[tblUnitCondition] DROP CONSTRAINT tblUnitCondition_FK02
GO

if exists (select * from dbo.sysobjects where id = object_id(N"[dbo].[tblUnitDetail_FK00]") and OBJECTPROPERTY(id, N"IsForeignKey") = 1)
ALTER TABLE [dbo].[tblUnitDetail] DROP CONSTRAINT tblUnitDetail_FK00
GO

if exists (select * from dbo.sysobjects where id = object_id(N"[dbo].[tblUnitDoc_FK00]") and OBJECTPROPERTY(id, N"IsForeignKey") = 1)
ALTER TABLE [dbo].[tblUnitDoc] DROP CONSTRAINT tblUnitDoc_FK00
GO

if exists (select * from dbo.sysobjects where id = object_id(N"[dbo].[tblUnitLog_FK00]") and OBJECTPROPERTY(id, N"IsForeignKey") = 1)
ALTER TABLE [dbo].[tblUnitLog] DROP CONSTRAINT tblUnitLog_FK00
GO

if exists (select * from dbo.sysobjects where id = object_id(N"[dbo].[FK_tblUnitOperation_tblUnits]") and OBJECTPROPERTY(id, N"IsForeignKey") = 1)
ALTER TABLE [dbo].[tblUnitOperation] DROP CONSTRAINT FK_tblUnitOperation_tblUnits
GO

if exists (select * from dbo.sysobjects where id = object_id(N"[dbo].[tblUnitSpec_FK00]") and OBJECTPROPERTY(id, N"IsForeignKey") = 1)
ALTER TABLE [dbo].[tblUnitSpec] DROP CONSTRAINT tblUnitSpec_FK00
GO

if exists (select * from dbo.sysobjects where id = object_id(N"[dbo].[FK_tblUnitSurface_tblUnits]") and OBJECTPROPERTY(id, N"IsForeignKey") = 1)
ALTER TABLE [dbo].[tblUnitSurface] DROP CONSTRAINT FK_tblUnitSurface_tblUnits
GO

if exists (select * from dbo.sysobjects where id = object_id(N"[dbo].[tblUnits]") and OBJECTPROPERTY(id, N"IsUserTable") = 1)
drop table [dbo].[tblUnits]
GO

CREATE TABLE [dbo].[tblUnits] (
[UnitID] [int] IDENTITY (1, 1) NOT NULL ,
[ParentUnitID] [int] NULL ,
[GTPID] [int] NULL ,
[UnitNum] [nvarchar] (100) COLLATE SQL_Latin1_General_CP1251_CI_AS NOT NULL ,
[UnitType] [int] NULL ,
[UnitName] [nvarchar] (100) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
[IzdName] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
[SbEdName] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
[Material] [varchar] (150) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
[Zagot] [nvarchar] (150) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
[Tverdost] [varchar] (150) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
[Order] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
[PartVolume] [int] NULL ,
[UnitWeight] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
[ZagotWeight] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
[MaxTverdost] [float] NULL ,
[ControlGroup] [nvarchar] (150) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
[ControlType] [nvarchar] (150) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
[FirstCover] [nvarchar] (150) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
[SecondCover] [nvarchar] (150) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
[TechCondition1] [varchar] (150) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
[TechCondition2] [varchar] (150) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
[TechCondition3] [varchar] (150) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
[TechCondition4] [varchar] (150) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
[TechCondition5] [varchar] (150) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
[TechCondition6] [varchar] (150) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
[UnitSher] [int] NULL ,
[UnitQuality] [int] NULL ,
[Profile] [nvarchar] (150) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
[EB] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
[EN] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
[NRash] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
[KIM] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
[KD] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
[UnitUserFullName] [nvarchar] (100) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
[UnitUserCheck] [nvarchar] (100) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
[UnitUserAgreed] [nvarchar] (100) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
[UnitUserMetrol] [nvarchar] (100) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
[UnitUserNCheck] [nvarchar] (100) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
[UnitUserNormir] [nvarchar] (100) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
[UnitDrawingName] [varchar] (255) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
[UnitDocSetNum] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
[UnitRefTPNum] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
[UnitCheckPerc] [float] NULL ,
[UnitOptional1] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
[UnitOptional2] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
[UnitOptional3] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
[UnitUserOTK] [nvarchar] (100) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
[UnitUserMater] [nvarchar] (100) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
[Unit_TS] [timestamp] NULL ,
[UnitCadastorID] [int] NULL ,
[UnitAdded] [datetime] NULL ,
[UnitAddedBy] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
[UnitEdited] [datetime] NULL ,
[UnitEditedBy] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
[UnitAssignedTo] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
[UnitNoRecalcCode] [bit] NULL ,
[UnitAuditLog] [int] NULL ,
[UnitAuditDateFrom] [datetime] NULL ,
[UnitGUID]  uniqueidentifier ROWGUIDCOL  NULL ,
[UnitVariant] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
[UnitTsht] AS ([dbo].[fnUnitTimeSum]([UnitID], 1)) ,
[UnitTpz] AS ([dbo].[fnUnitTimeSum]([UnitID], 2)) ,
[UnitVedNum] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1251_CI_AS NULL ,
[UnitTehnoProM] [int] NULL ,
[UnitRevision] [int] NULL ,
[UnitState] [int] NULL
) ON [PRIMARY]
GO


 
Ega23 ©   (2004-08-06 17:31) [26]

Ну что можно сказать?
1. почему столько NULL? Вот например, UnitType - наверняка вторичный ключ на tblUnitTypes.
2. Таблица денормализована до ужаса: всю информацию о User"е вынести в отдельную таблицу, а на неё вторичный ключ воткнуть. TechConditions тоже выкинуть нафиг в отдельную таблицу. И так далее. В общем - огромное ФИ проектировщику, так не делается.
3. А зачем nvarchar? Разве varchar недостаточно?


 
Nikolay M. ©   (2004-08-06 17:32) [27]

Суммарный размер полей за 8060 не вылезает?
Случайно не только nvarchar-ы теряются?


 
Ega23 ©   (2004-08-06 17:42) [28]

Суммарный размер полей за 8060 не вылезает?

Коля, а это ограничение? Я просто такого никогда не слышал, хотя, с другой стороны, я никогда таких диких таблиц не видел.


 
Nikolay M. ©   (2004-08-06 17:50) [29]


> Ega23 ©   (06.08.04 17:42) [28]

Угу, посмотри в БОЛ ремарки к CREATE TABLE :)


 
Ega23 ©   (2004-08-06 18:05) [30]

Юникод-символ сколько байт занимает?


 
Nikolay M. ©   (2004-08-06 18:08) [31]

Пока вроде 2 было :?)
Обычно 2...


 
Ega23 ©   (2004-08-06 18:11) [32]

Тады со всеми nvarchar у него точно больше 8000 per row


 
Рафик   (2004-08-09 08:23) [33]

Вся проблема в том что это действующая программа, и я в ней поля менять не могу, разделять таблицы так как оригинальная програ работать не будет, мне то надо только некоторые данные извлекать.


 
Nikolay M. ©   (2004-08-09 10:10) [34]

Сделать, как тебе сказали, денормализацию, эту страшную таблицу удалить и для поддержки обратной совместимости создать вьюху с таким же именем.


 
Ega23 ©   (2004-08-09 10:29) [35]

денормализацию
????
Может нормализацию???


 
Nikolay M. ©   (2004-08-09 10:31) [36]


> Ega23 ©   (09.08.04 10:29) [35]

Ессессно.
10 утра, а я еще не проснулся... :)


 
Рафик   (2004-08-09 11:10) [37]

Так ведь прога оригинальная не будет работать, она же закрытая!


 
Nikolay M. ©   (2004-08-09 11:20) [38]


> Так ведь прога оригинальная не будет работать, она же закрытая!

Почему?


> для поддержки обратной совместимости создать вьюху с таким
> же именем.


Ы?


 
Рафик   (2004-08-09 11:23) [39]

А ссылку по полям, как можно сделать!


 
Sergey13 ©   (2004-08-09 11:27) [40]

2[38] Nikolay M. ©   (09.08.04 11:20)
ИМХО, запаришся подставлять, если это не просто "действующая программа", а чужая (без исходников) "действующая программа" . Т.е. саму то таблу на вьюху - нет проблем. А вот ведение той таблицы в закрытой программе, а ведение новых таблиц - как? Тут по крайней мере все очень непросто. ИМХО


 
Nikolay M. ©   (2004-08-09 11:29) [41]


> Рафик   (09.08.04 11:23) [39]
> А ссылку по полям, как можно сделать!

А теперь тоже самое, но по-русски? И если это вопрос, то еще бы не помешало и знак "?" в конце поставить :)


 
sniknik ©   (2004-08-09 11:34) [42]

сомнение есть насчет ограничения...  не о самом ограничениии а о посчитаном обьеме записи. nvarchar в записи занимает 4 байта (это же указатель), стоит ли учитывать обьем на который он указывает а не тот что занимает?

сделал таблицу по примеру скрипта... все поля видны.
естественно это  
> [UnitTsht] AS ([dbo].[fnUnitTimeSum]([UnitID], 1)) ,
> [UnitTpz] AS ([dbo].[fnUnitTimeSum]([UnitID], 2)) ,
выкинул (ну нет такой у меня)

дело не в этом. (имхо) скорее в методах доступа (если счас скажет что BDE использует, не удивлюсь ;о)).


 
Рафик   (2004-08-09 11:37) [43]

Ничего не понял, что мне сделать то лучше, как мне от этого извращения избавиться?

Я уже в полном тупике блин!


 
Рафик   (2004-08-09 11:44) [44]

Интересная вещь поменял nvarChar на Varchar и поле увидилось, чем это может быть плачевно, подсажите пожалуста!!!


 
sniknik ©   (2004-08-09 11:55) [45]

> Я уже в полном тупике блин!
не ты один, ты всех в него поставил. ;о))

ведь ничего же непонятно, как доступаешся, чего у тебя там за код, какие поля определил... и т.д.

могу только предложить, выслать тебе тестовую програмку (500кб архив), если в ней по твоему запросу поля увидиш то дело явно не в базе. а в твоем (так и непоказаном) коде (/структуре определенной в десигне).

> nvarChar на Varchar и поле увидилось, чем это может быть плачевно
неправильной работой проги, n это "национальный"/national, типа руского.... так ты значений в поле не видел, а не самого поля?????


 
Nikolay M. ©   (2004-08-09 12:11) [46]


> nvarchar в записи занимает 4 байта (это же указатель),

2 байта. При чем тут указатель?

nvarchar(n)

Variable-length Unicode character data of n characters. n must be a value from 1 through 4,000. Storage size, in bytes, is two times the number of characters entered. The data entered can be 0 characters in length. The SQL-92 synonyms for nvarchar are national char varying and national character varying.


 
Рафик   (2004-08-09 12:34) [47]

Да у меня и кода нет ни какого обычный запрос Select * From tblUnits, в DBGRID, нет полей которые имеют тип nvarChar.


 
sniknik ©   (2004-08-09 12:44) [48]

> 2 байта. При чем тут указатель?
varchar указывает на то что что в записи не хранится сама строка как в случае char, а только указатель на нее сама она в другом месте (иначе не достигнуть вариабельности в длинне).
вот при этом.

можеш полистать BOL (вижу знаком, ссылки копировать умееш) по теме архитектура базы.
почему 4 а не два? а хрен его знает именно такой встречал в описаниях (может резерв, может для однотипности с мемо/имеджем, может просто меня память подводит и действительно 2)

для облегчения поиска (это типа подтверждение что я прав, в том что не надо было варчары считать)
раздел Pages and Extents
....

Rows cannot span pages in SQL Server. In SQL Server 2000, the maximum amount of data contained in a single row is 8060 bytes, not including text, ntext, and image data.

хотя чего доказывать? см.
> Рафик   (09.08.04 11:44) [44]
это у него действительно не от ограничения.


 
sniknik ©   (2004-08-09 12:46) [49]

> Да у меня и кода нет ни какого обычный запрос Select * From tblUnits, в DBGRID, нет полей которые имеют тип nvarChar.
ага, запрос естественно висит в воздухе, а несуществующие nvarChar-ы не имеют отношения к показаному скрипту. а что же мы тут тогда обсуждаем?


 
Ega23 ©   (2004-08-09 12:59) [50]

2 sniknik ©   (09.08.04 12:46) [49]

1. nvarchar от varchar отличается только тем, что юникодовая строка.
2. Действительно, varchar всего лишь указатель; если таблица с одним полем varchar(8000), то длина записи - 4 байта.
3. Ты имеешь что-то против BDE?   :о)

2 Рафик   (09.08.04 12:34) [47]
Исправь nvarchar на varchar


 
Nikolay M. ©   (2004-08-09 13:02) [51]


> sniknik ©   (09.08.04 12:44) [48]

Уговорил. Насколько помню, варчары хранятся в "куче" в MySQL и, кажется, ИБ, а вот насчет мсскл такой уверенности не было, виноват :)


 
sniknik ©   (2004-08-09 13:36) [52]

> 2 sniknik ©   (09.08.04 12:46) [49]
мне то это зачем? я чтото против этого говорил?

> 3. Ты имеешь что-то против BDE?   :о)
а то. BDE хорош для парадокса и тд. локальные базы, и то не всегда, сейчас.
юникод он кстати не поддерживает. но по вопросу (исчезают поля, а не данные в них символами вопроса) непонять. и не предположить (неуказано что используется)

> 2 Рафик   (09.08.04 12:34) [47]
> Исправь nvarchar на varchar
он это уже сделал, см. [44]. ну а если родная прога использует их для 2х-3х-... языков? а не только английский-локальный. тогда как?
глюки на оригинальную прогу спишем? чего гады не предусмотрели, мы же тут править будем!


 
s999   (2004-08-09 14:10) [53]


> Интересная вещь поменял nvarChar на Varchar и поле увидилось,
> чем это может быть плачевно, подсажите пожалуста!!!


Скорее всего, просто компоненты доступа не поддерживают тип данных nvarChar.



Страницы: 1 2 вся ветка

Текущий архив: 2004.09.05;
Скачать: CL | DM;

Наверх




Память: 0.61 MB
Время: 0.052 c
14-1092582660
Дмитрий12
2004-08-15 19:11
2004.09.05
Пожалуйста, помогите перевести код на C++:


1-1093157062
Maks Realov
2004-08-22 10:44
2004.09.05
Быстрое выделение памяти и быстрая её очистка


1-1092727923
Cosinus
2004-08-17 11:32
2004.09.05
Корректное создание и вывод сообщений об исключительных ситуациях


14-1092776663
Cheater
2004-08-18 01:04
2004.09.05
Загадили природу....


4-1090371176
Вопрос
2004-07-21 04:52
2004.09.05
ФОРМАТИРОВАНИЕ ДИСКА