К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

Получение данных из FireBird в 1С77

Гость
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 числовых, есть и больше. Сами идентификаторы - тоже числа. Уйма времени и кода.

Что б попытаться найти нужные данные, мне нужно сделать вывод значений, хранящихся в них. А потом их проанализировать, сопоставив с визуальными данными отчетов и выводимой на экран информацией.

Но на будущее я возьму эту формулу. Может очень пригодиться. Спасибо.
6 - 17.10.2014 - 14:29
5-Lisonia >Я вообще проблему не вижу. У меня почему-то всё читается, и числа и даты, и строки.
Попробуй обращаться к полю не по имени, а по порядковому номеру: БазаДан.Fields(0).Value, БазаДан.Fields(1).Value...
И вообще, для анализа БД юзай IBExpert (лежит здесь)
Гость
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
Цитата:
Сообщение от Lisonia Посмотреть сообщение
Значен = БазаДан.Fields(имяПоля).Value;
хмм..
может ошибаюсь, но
Значен = БазаДан.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)


К списку вопросов






Copyright ©, Все права защищены