Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.07.27;
Скачать: [xml.tar.bz2];

Вниз

После переброски Упаковка = #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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.006 c
2-1214223719
uno-84
2008-06-23 16:21
2008.07.27
CheckBox в ListView


3-1202821453
lead-in
2008-02-12 16:04
2008.07.27
минимальная БД


2-1214411405
Trange
2008-06-25 20:30
2008.07.27
Картинка в TMenuItem


2-1214392684
Stif
2008-06-25 15:18
2008.07.27
Как сократить


15-1212761210
Ega23
2008-06-06 18:06
2008.07.27
Не дать организьму умереть от обезвоживания?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский