0
- 17.10.2014 - 11:09
|
Как получить значение поля таблицы FB, зная наименование поля? Выдается ошибка с цифровых полей. Запрос такой : СтрокаПолей ="select SSUM,RSUM from NACH"; ЗапДан = СоздатьОбъект("ADODB.Command"); ЗапДан.ActiveConnection = ГДБ; ЗапДан.CommandText = СокрЛП(СтрокаПолей); БазаДан = СоздатьОбъект("ADODB.RecordSet"); БазаДан = ЗапДан.Execute(); //Выполнить БазаДан.MoveFirst(); Пока БазаДан.EOF() = 0 Цикл имяПоля="SSUM"; Значен = БазаДан.Fields(имяПоля).Value; БазаДан.MoveNext(); КонецЦикла; Выдает ошибку : БазаДан.Fields(имяПоля).Value = Ошибка в выражении! Пробовала и Text и Value2 - в этом случае ошибка при получении данных из любого поля. | |
1
- 17.10.2014 - 11:38
|
Эту ссылку смотрела? http://forum.sources.ru/index.php?sh...&#entry2125080 Там по-моему есть получение данных. | |
2
- 17.10.2014 - 11:39
|
Вот еще на инфостарте, например, есть обработка: http://infostart.ru/public/61622/ | |
3
- 17.10.2014 - 11:56
|
(1) эту еще не смотрела. Пытаюсь в море инфы найти нужную. (2) именно эту обработку я и скачала. Она и выдает ошибки. Наверное, писалась под определенные данные. Вот ты знаешь, как определить тип данных в поле? Пока нашла только описание типов и что получение числовых данных тоже вызывает проблему. Может быть в запросе как-то нужно это прописывать? Просто как внутри связаны эти таблицы я вообще не имею представления. Разрабов ее написавшие нет. Есть только выходные данные в виде проги ехе, файла бд и пользовательского интерфейса. | |
4
- 17.10.2014 - 12:04
|
Ну значит преобразуй числовой тип в текстовый в самом запросе: "select CAST(SSUM AS CHAR(15)) AS SSUM , CAST(RSUM AS CHAR(15)) AS RSUM from NACH"; | |
5
- 17.10.2014 - 12:38
|
А когда перебираешь записи нельзя сразу поставить условие : Если тип Числовой - перевести в текстовый. Это FB - не умеет? Просто в базе 20 таблиц. В каждой минимум 3 поля. Проанализировать каждую таблицу, для каждого поля прописать.... Там же не по 1-2 числовых, есть и больше. Сами идентификаторы - тоже числа. Уйма времени и кода. Что б попытаться найти нужные данные, мне нужно сделать вывод значений, хранящихся в них. А потом их проанализировать, сопоставив с визуальными данными отчетов и выводимой на экран информацией. Но на будущее я возьму эту формулу. Может очень пригодиться. Спасибо. | |
7
- 17.10.2014 - 14:44
|
И по номеру обращалась и по имени - результат един. Спасибо, поюзаю )) | |
8
- 17.10.2014 - 14:49
|
7-Lisonia > Value = СокрЛП(БазаДан.Fields(имяПоля).Value); Так тоже ошибка? | |
9
- 17.10.2014 - 14:50
|
Пробуй явно задать имя поля в выборке: СтрокаПолей ="select SSUM as SSUM, RSUM as RSUM from NACH"; | |
10
- 17.10.2014 - 15:54
|
Табле = "'NACH'" СтрокаПолей = "select ID as ID,FLS as FLS,DT as DT,IDUSL as IDUSL,TSUM as TSUM,RSUM as RSUM,SSUM as SSUM from NACH" Значен = "TSUM" БазаДан.Fields(Значен).Value = Ошибка в выражении! FloatToStr(БазаДан.Fields(Значен).Value) = Ошибка в выражении! БазаДан.Fields(Значен).Text = Ошибка в выражении! СокрЛП(БазаДан.Fields(Значен).Value) = Ошибка в выражении! | |
11
- 17.10.2014 - 16:02
|
10-Lisonia >Посмотри в IBExpert точный тип поля TSUM. А лучше, если есть возможность, выложи куда-нибудь БД и сбрось мне ссылку в личку. Чудеса, да и только! | |
12
- 17.10.2014 - 16:24
| IBExpert - выдает ошибку. Сперва ругался на длл, после перезагрузки просто не открывает. | |
13
- 17.10.2014 - 16:30
|
12-Lisonia >Базу кидай куда-нибудь. По фотке лечить не умею. | |
14
- 17.10.2014 - 16:38
|
Спасибо, на какой файлообменник лучше залить? На мои привычные - не льет. или из дома позже попробую залить. Буду ждать ответа. Заранее спасибо за желание помочь! | |
15
- 17.10.2014 - 16:42
|
14-Lisonia >Да хоть на какие :) Если торрентом пользуешься, то можешь создать персональный торрент и выслать мне торрент файл, я на прямую у тебя скачаю. Как это сделать - инструкцию легко найдешь в яндексе. Если БД меньше гига, можешь на http://webfiles.ru/ залить. | |
16
- 17.10.2014 - 16:46
| 14-Lisonia >Я тебе в личку сообщение отправил, проверь. | |
17
- 17.10.2014 - 18:24
| хмм.. может ошибаюсь, но Значен = БазаДан.Fields.Item(имяПоля).Value; или Значен = БазаДан.Fields.Item(НомерПоля).Value; | |
18
- 17.10.2014 - 18:30
|
17-Блондинка в шок >Не, не, именно .Fields(n).Value Итема там не было :) | |
19
- 17.10.2014 - 18:58
| Кстати, на одном форуме было написано именно Item. Я пробовала это в обработке - выдавал тоже самое значение, что и без оного - по крайней мере, на моем файле. | |
20
- 17.10.2014 - 19:22
|
ну не знаю, я с ADO всегда по букварю делала. А в букваре все примеры с item http://www.w3schools.com/asp/ado_ref_recordset.asp хотя мелкомягкие и говорят, что это одно и то же: http://msdn.microsoft.com/ru-ru/libr...(v=vs.85).aspx | |
21
- 17.10.2014 - 19:43
| А есть букварь на русском языке?))) | |
22
- 18.10.2014 - 00:02
|
20-Блондинка в шок >Тут понимаешь в чем фишка: RecordSet.Fields(0).Value = RecordSet.Fields.Item(0) | |
| Интернет-форум Краснодарского края и Краснодара |