Форум: "Начинающим";
Текущий архив: 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;
> …
> 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.008 c