Xbase проблема с записью

Тема в разделе "1C и всё что с ней связано", создана пользователем serg161, 28 янв 2009.

  1. serg161

    serg161 Гость

    Элементарный код, а не работает!

    базаУчЗаписей.Добавить();
    базаУчЗаписей.LOGIN = стр.Логин;
    базаУчЗаписей.PASSWORD = стр.Пароль;
    базаУчЗаписей.Записать();

    Метод записать просто игнорируется, без всяких ошибок. Просто не пишет и все! В чем может быть проблема?
     
  2. kaa

    kaa Гость

    возможно имя файла длинное, кажется должно быть не более 5 символов
     
  3. serg161

    serg161 Гость

    К сожалению и с коротким именем не прокатило. Проблема в чем то другом.

    текБаза = Новый XBase();
    текБаза.ОткрытьФайл(АдресПМ+"config\acc.dbf",АдресПМ+"config\acc.cdx");
    сч=1;
    Пока сч < 10 Цикл
    текБаза.Добавить();
    текБаза.GLN = сч;
    текБаза.Записать();
    сч=сч+1;
    КонецЦикла;

    Создает только одну запись, остальные молча игнорирует!
     
  4. puh14

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    текБаза = Новый XBase();
    текБаза.ОткрытьФайл(АдресПМ+"config\acc.dbf",АдресПМ+"config\acc.cdx");
    сч=1;
    Пока сч < 10 Цикл
    текБаза.Добавить();
    текБаза.GLN = сч;
    сч=сч+1;
    КонецЦикла;
    текБаза.Записать();

    а так сколько сделает?

    неужто ДБФ ожидается под два гига? индекс-то зачем?
     
  5. serg161

    serg161 Гость

    тоже 1 запись, только последнюю. Насчет размера файла пока не знаю, вполне может быть и два гига, если получится записать больше 1 строки :huh:
     
  6. kaa

    kaa Гость

    //надо так
    ока сч < 10 Цикл
    текБаза.Добавить();
    текБаза.GLN = сч;
    сч=сч+1;
    текБаза.Записать();
    КонецЦикла;
    текБаза.Записать();
     
  7. puh14

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    текБаза = Новый XBase();
    текБаза.ОткрытьФайл(АдресПМ+"config\acc.dbf");
    сч=1;
    Пока сч < 10 Цикл
    текБаза.Добавить();
    текБаза.GLN = сч;
    текБаза.Записать();
    сч=сч+1;
    КонецЦикла;

    а ежли вот так, без индекса? Мож надо использовать Переиндексировать() перез записью?
     
  8. serg161

    serg161 Гость

    Прикольно, без индекса кажется записал. Это что ж после добавления каждой записи надо переиндексировать??? В перспективе то задача состоит в том, чтобы открыть базу, попробовать найти запись (тут без индекса как я понимаю никак?) и если такой записи нет, то добавить. А если надо добавить 10 записей, то надо 10 раз переиндексировать???
     
  9. puh14

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    Я обычно искал запись ДБФ через перебор строк.
    Насчет индексов глянь ДобавитьИндекс()
    СоздатьИндексныйФайл()
     
  10. serg161

    serg161 Гость

    Индексный файл создает, тут все нормально. Проблема, если открывать потом с этим файлом - тогда не пишет. А если без него - то пишет. А запустить поиск по базе без открытия индексного файла я ведь не смогу?
     
  11. puh14

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    А какой командой ты поиск осуществляешь?
     
  12. serg161

    serg161 Гость

    Найти(), НайтиПоКлючу(). И там и там должен выставляться текущий индекс.
     
  13. puh14

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    Ключ там как атрибут. Походу надо наверно так

    текБаза = Новый XBase();
    текБаза.ОткрытьФайл(АдресПМ+"config\acc.dbf",АдресПМ+"config\acc.cdx");
    сч=1;
    Пока сч < 10 Цикл
    текБаза.Добавить();
    текБаза.GLN = сч;
    ТекБаза.Ключ = сч;// хотя там в добавить индекс написано, что должно соответствовать параметрам ДБФ, индекс по другому выглядит.
    текБаза.Записать();
    сч=сч+1;
    КонецЦикла;
     
  14. serg161

    serg161 Гость

    не понял? В добавить() про ключ ничего не сказано. он используется при поиске, а не доавлении.
     
  15. puh14

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    Пардон - это я ошибся. На семерке вот такой код работает;

    Процедура Сформировать()
    текБаза = СоздатьОбъект("XBASE");// у тебя текБаза = Новый XBase();
    Если ТекБаза.Открыта() = 1 Тогда
    ТекБаза.ЗакрытьФайл();
    КонецЕсли;
    ТекБаза.ДобавитьПоле("GLN",1,15,2);

    ТекБаза.ДобавитьИндекс("ID","GLN",1,0,);
    текБаза.СоздатьФайл(КаталогИБ() +"\acc.dbf",КаталогИБ()+"\acc.cdx");
    Если ТекБаза.Открыта() = 0 Тогда
    текБаза.ОткрытьФайл(КаталогИБ() +"\acc.dbf",КаталогИБ()+"\acc.cdx");
    КонецЕсли;



    сч=1;
    Пока сч < 10 Цикл
    текБаза.Добавить();
    текБаза.GLN = сч;
    текБаза.Записать();
    сч=сч+1;
    КонецЦикла;

    КонецПроцедуры
     
Загрузка...
Похожие Темы - Xbase проблема записью
  1. KiR
    Ответов:
    0
    Просмотров:
    2.168
  2. AgniXRudra
    Ответов:
    1
    Просмотров:
    39
  3. Zloikaktus
    Ответов:
    0
    Просмотров:
    18
  4. c0de3r
    Ответов:
    5
    Просмотров:
    151
  5. DobermannTT
    Ответов:
    10
    Просмотров:
    157

Поделиться этой страницей