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

Вниз

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

 
petvv   (2008-06-24 10:41) [0]

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

Проблема такая:
Тупо заполняю таблицу (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"

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


 
Palladin ©   (2008-06-24 10:43) [1]


> получается Query4.FieldByName("edp").AsString="#Z SZ#S"

а чему оно должно получаться?


 
petvv   (2008-06-24 10:45) [2]

="Упаковка"

Если имеешь в виду, что должно стоять Query4.FieldByName("edp").Value? то оно тоже ="#Z SZ#S"


 
korneley ©   (2008-06-24 10:53) [3]

так может это и есть название упаковки, раз запрос его возвращает?


 
petvv   (2008-06-24 10:54) [4]

Нет поле edp имеет значение "упаковка"


 
Плохиш ©   (2008-06-24 10:57) [5]


> petvv   (24.06.08 10:54) [4]
> Нет поле edp имеет значение "упаковка"

В стандартной кодовой странице нет таких закорючек.


 
petvv   (2008-06-24 10:59) [6]

Пробовал уже перекодировал в разные кодировки -> хрен редьки не слаще


 
korneley ©   (2008-06-24 11:08) [7]

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


 
Sergey13 ©   (2008-06-24 11:13) [8]

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

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


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

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


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

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

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|Новосибхимфарм - Россия                                                                                                                                                                                 |


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

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


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

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


 
petvv   (2008-06-24 11:24) [13]

CDBF


 
ЮЮ ©   (2008-06-24 11:25) [14]

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

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


> Table1.Edit;
>      for j := 1 to Query4.RecordCount do
>        begin
>         Table1.FieldByName("ed").AsString:=Query4.FieldByName("ed").AsString;
>         &#133
>         Query4.Next;
>        end;
>   end;


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


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

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


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

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


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

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


 
Slym ©   (2008-06-24 11:31) [17]

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?


 
Slym ©   (2008-06-24 11:33) [18]

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

if not query4.empty then


 
ЮЮ ©   (2008-06-24 11:34) [19]

> а где Post?

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


 
Slym ©   (2008-06-24 11:37) [20]

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


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


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

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


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

такая же лажа


 
korneley ©   (2008-06-24 11:42) [22]

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


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


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

значит [9]


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

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

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


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

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


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


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

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



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

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

Наверх




Память: 0.54 MB
Время: 0.013 c
2-1214410609
Анониммм
2008-06-25 20:16
2008.07.27
В каком событии отслеживать перемещение формы?


2-1214562652
kazar
2008-06-27 14:30
2008.07.27
помогите алгоритмом


3-1202816869
Kuibida
2008-02-12 14:47
2008.07.27
Что за база такая (форматы файлов *.d и *.i) ?


15-1212916219
tesseract
2008-06-08 13:10
2008.07.27
eve-online А кто на форуме вообще играет, знаю что есть и много


2-1214447178
AlexAA
2008-06-26 06:26
2008.07.27
Как отправить письмо по электронной почте?