Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

После переброски 'Упаковка' = '#Z SZ#S' = ??? (XP, D2007)


Страницы:   1 2

petvv ©   (2008-06-24 10:41:00) 

Доброго времени суток !

Проблема такая:
Тупо заполняю таблицу (dbf) недостающими значениями из другой таблицы (то же dbf, выгружена из 1С). Вот код:
Table1.Close;
Nom_1c.Close;
Table1.Active:=True;
Table1.Edit;
Nom_1c.Active:=True;
for n := 1 to Table1.RecordCount do
 begin
   kod:=Table1.FieldByName('cod_post').AsString;
   i:=pos('|',kod);
   if i>0 then
//    kod:=trim(copy(kod,1,i-1))
   kod:=copy(kod,1,i-1)
   else
   kod:=kod;
   firma:=Table1.FieldByName('post').AsString;
   Query4.Close;
   Query4.SQL.Clear;
//    sqlText1:= ' and noml_1c.Kod_post=:firma';
   sqlText:='select ed, edp, okei, ISPVZAYAVK, JNVLS, OA, NDS, ZAKBEZPR, SHTRIH from noml_1с where KOD_POST=:kod';//  and Post=:firma';
   Query4.SQL.Add(sqlText);
   Query4.Params[0].AsInteger:=StrToInt(kod);
//    Query4.Params[1].AsString:=firma;
   Query4.Open;
   if query4.RecordCount>0 then
   begin
   Table1.Edit;
      for j := 1 to Query4.RecordCount do
        begin
         Table1.FieldByName('ed').AsString:=Query4.FieldByName('ed').AsString;
         sqlText1:=Query4.FieldByName('edp').Value;
         Table1.FieldByName('edp').AsString:=Query4.FieldByName('edp').AsString;
         Table1.FieldByName('okei').AsString:=Query4.FieldByName('okei').AsString;
         Table1.FieldByName('ISPVZ').AsString:=Query4.FieldByName('ISPVZAYAVK').AsString;
         Table1.FieldByName('JNVLS').AsString:=Query4.FieldByName('JNVLS').AsString;
         Table1.FieldByName('OA').AsString:=Query4.FieldByName('OA').AsString;
         Table1.FieldByName('NDS').AsString:=Query4.FieldByName('NDS').AsString;
         Table1.FieldByName('ZAKBEZPR').AsString:=Query4.FieldByName('ZAKBEZPR').AsString ;
         Table1.FieldByName('Strich').AsString:=Query4.FieldByName('SHTRIH').AsString;
         Query4.Next;
        end;
   end;
   Table1.Next;
 end;

end;

и в этом месте
Table1.FieldByName('edp').AsString:=Query4.FieldByName('edp').AsString;
получается Query4.FieldByName('edp').AsString='#Z SZ#S'

Это как так, и как с этим бороться ???


petvv   (2008-06-24 12:59:00) [1]


> Обнули тридацый байт заголовка dbf.

Вот это дельный совет.
После обнуления, всё встало на свои места.
Всем респект, тема закрыта


Поросенок Винни-Пух   (2008-06-24 12:08:00) [2]

dbf из 1С читается в БДЕ?
Обнули тридацый байт заголовка dbf.


ЮЮ   (2008-06-24 11:54:00) [3]

> такая же лажа

Что и требовалось доказать. Одинаковое расщирение не означает одинаковую СУБД.
И таблице noml_1с место в другой базе (если используешь TDataBase), которую надо настраивать мначе, до тех пор пока в грине не увидишь то, что хочешь.


Правильный-Вася   (2008-06-24 11:46:00) [4]


> > Поставь DBGrid и отобрази в нём noml_1с. И в нем все правильно?
> такая же лажа

значит [9]


korneley   (2008-06-24 11:42:00) [5]

Упаковывать :)


petvv   (2008-06-24 11:40:00) [6]


> поля имеют одинаковые имена... можно цыклегом по полям пробежаться
> и не городить три короба кода

а разница то какая ???


> Поставь DBGrid и отобрази в нём noml_1с. И в нем все правильно?

такая же лажа


Slym   (2008-06-24 11:37:00) [7]

ЮЮ ©   (24.06.08 11:34) [19]
- операция окончена... следующий!
- а зашивать?


ЮЮ   (2008-06-24 11:34:00) [8]

> а где Post?

Вызовется автоматом при Next :)


Slym   (2008-06-24 11:33:00) [9]

petvv   (24.06.08 10:41)
if query4.RecordCount>0 then

if not query4.empty then


Slym   (2008-06-24 11:31:00) [10]

petvv   (24.06.08 10:41)
for n := 1 to Table1.RecordCount do

нинадо так... while not Table1.eof do
petvv   (24.06.08 10:41)
Query4.SQL.Clear;

нафега на каждой итерации? одного раза мало?
petvv   (24.06.08 10:41)
Table1.FieldByName('edp').AsString:=Query4.FieldByName('edp').AsString;

поля имеют одинаковые имена... можно цыклегом по полям пробежаться и не городить три короба кода
petvv   (24.06.08 10:41)
Table1.Edit;

а где Post?


ЮЮ   (2008-06-24 11:29:00) [11]

> соответствует только одна запись


и исходя из этого присктствует код

for j := 1 to Query4.RecordCount do
  begin
    …
  Query4.Next;
  end;


petvv   (2008-06-24 11:26:00) [12]

желание не странное, просто одному коду (который передаётся в параметр запроса) соответствует только одна запись


ЮЮ   (2008-06-24 11:25:00) [13]

> Ничего я не перепутал, вот структура таблицы:

Поставь DBGrid и отобрази в нём noml_1с. И в нем все правильно?


> Table1.Edit;
>       for j := 1 to Query4.RecordCount do
>        begin
>         Table1.FieldByName('ed').AsString:=Query4.FieldByName('ed').AsString;
>         …
>         Query4.Next;
>        end;
>   end;


Странное желание в 1 запись Table1 писать несколько записей из Query4


petvv   (2008-06-24 11:24:00) [14]

CDBF


Правильный-Вася   (2008-06-24 11:23:00) [15]

и чем содержимое таблицы смотришь?
явно ж не в dbgrid'е


petvv   (2008-06-24 11:21:00) [16]

Ничего я не перепутал, вот структура таблицы:
KOD           |NAME      |NAMEFORPRI |ED |EDP          |OKEI
010024608  |* Аскорб |* Аскорб )   | 15|Упаковка  | 778


petvv   (2008-06-24 11:18:00) [17]

Ничего я не перепутал, вот структура таблицы:

Name        Type          Length
KOD         Character     200
NAME        Character     200
NAMEFORPRI  Character     200
ED          Character      10
EDP         Character      10
OKEI        Numeric        15  0
ISPVZAYAVK  Character      10
JNVLS       Character      10
OA          Character      10
NDS         Character      10
ZAKBEZPR    Numeric        10  0
POST        Character     200
KOD_POST    Numeric        15  0
PROIZV      Character     200
SHTRIH      Character      40

KOD        |NAME                                   |NAMEFORPRI                             |ED |EDP       |OKEI|ISPVZAYAVK |JNVLS     |OA        |NDS       |ZAKBEZPR  |POST                                                                                                                                                                                                    |KOD_POST       |PROIZV                                                                                                                                                                                                  |SHTRIH                                  
010024608  |* Аскорб к-та д/ин. 5% 2мл х 10(09.08) |* Аскорб к-та д/ин. 5% 2мл х 10(09.08) | 15|Упаковка  | 778|Нет        |Нет       |Нет       |10%       |         0|РОСТА                                                                                                                                                                                                   |         122321|Новосибхимфарм - Россия                                                                                                                                                                                 |


Правильный-Вася   (2008-06-24 11:14:00) [18]

посмотреть:
1. в какой кодировке создана твоя таблица
2. в какой кодировке создана таблица чужая
3. какой langdriver установлен для dbase и foxpro в БДЕ, если ничего не выставлял вручную


Sergey13   (2008-06-24 11:13:00) [19]

> [0] petvv   (24.06.08 10:41)
> то же dbf, выгружена из 1С

А там никакого шифрования или чего-то подобного нет?


korneley   (2008-06-24 11:08:00) [20]

Че-то по длине не стыкуется: семь символов супротив восьми. А с чего вообще это знание: " поле edp имеет значение 'упаковка'?" Скорее всего там именно "#Z SZ#S" Может перепутались понятия "Название" и "Содержимое"?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо