Форум: "Начинающим";
Текущий архив: 2011.08.07;
Скачать: [xml.tar.bz2];
ВнизStringGrid и таблица Word Найти похожие ветки
← →
Максон © (2011-04-11 12:19) [0]Уважаемые форумчане, подскажите или наведите на мысль
Каким образом данные из StringGrid можно перенести в готовую таблицу шаблона Word.
← →
clickmaker © (2011-04-11 12:37) [1]н-р, с помощью TWordApplication
← →
Dennis I. Komarov © (2011-04-11 12:42) [2]и вот как же на нее наводить, прикажите?
цикл по всем строкам
цикл по всем столбцам
в ячейку таблицы в word вставить соотверствующее содержимое из StringGrid
← →
OW © (2011-04-11 12:49) [3]var
W, T: Variant;
begin
W := CreateOleObject("Word.Application");
try
W.Documents.Open("C:\1.doc",EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam);
T := W.ActiveDocument.Tables.Item(1);
T.Cell(1, 1).Range.Text := "qwer";
← →
Максон © (2011-04-11 12:49) [4]Это код почему-то не работает
procedure TForm2.DocbtnClick(Sender: TObject);
var RowPoint: Integer;
begin
if strngrd1.RowCount > 1 then
begin
if FileExists(GetCurrentDir + "\mmm.dot") then
begin
//
WA := CreateOLEObject("Word.Application");
WA.Documents.Add(GetCurrentDir + "\mmm.dot", false, 0);
WA.Options.CheckSpellingAsYouType := false;
WA.Options.CheckGrammarAsYouType := false;
//
// на всю талицу сделал закладку "Таблица"
WA.ActiveDocument.Bookmarks.Item("ТАБЛИЦА").Select;
for RowPoint := 2 to strngrd1.RowCount do
begin
//
// Добавляем новую строку
WA.Selection.Tables.Item(1).Rows.Add(EmptyParam);
// Заполняем строку
WA.Selection.Tables.Item(1).Cell( 2, 1).Range.Text := IntToStr(RowPoint - 1) + "."; // 1-ый столбец
WA.Selection.Tables.Item(1).Cell( 2, 2).Range.Text := strngrd1.Cells[0, RowPoint - 1]; // 2-ой столбец
WA.Selection.Tables.Item(1).Cell( 2, 3).Range.Text := strngrd1.Cells[1, RowPoint - 1]; // 3-тий столбец
WA.Selection.Tables.Item(1).Cell( 2, 4).Range.Text := strngrd1.Cells[2, RowPoint - 1]; // 4-тый столбец
WA.Selection.Tables.Item(1).Cell( 2, 5).Range.Text := strngrd1.Cells[5, RowPoint - 1]; // 6-той столбец
WA.Selection.Tables.Item(1).Cell( 2, 6).Range.Text := strngrd1.Cells[6, RowPoint - 1]; // 7-мой столбец
WA.Selection.Tables.Item(1).Cell( 2, 7).Range.Text := strngrd1.Cells[7, RowPoint - 1]; // 8-мой столбец
end;
end;
end;
end;
← →
Dennis I. Komarov © (2011-04-11 12:59) [5]Кофе или ромашки?
← →
Максон © (2011-04-11 13:01) [6]Ребята, ну я правда не знаю как сделать :(
← →
Максон © (2011-04-11 13:37) [7]Как посоветовали переделал все
procedure TForm2.DocbtnClick(Sender: TObject);
var
W, T: Variant;
begin
W := CreateOleObject("Word.Application");
W.Visible:=True;
W.DisplayAlerts:=True;
try
W.Documents.Open(GetCurrentDir +"\mmm.dot",EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam);
T := W.ActiveDocument.Tables.Item(1);
T.Cell(5, 2).Range.Text := strngrd1.Cells[0,2];
finally
end;
end;
Но все равно не получается отображение данных в таблице. Уже весь букварь перелистал, не могу назначить нужную ячейку в Stringgrid
← →
OW © (2011-04-11 14:50) [8]
> T.Cell(1, 1).Range.Text := "qwer";
"qwer" в первой таблице, в ячейке (1 1), есть?
← →
Dennis I. Komarov © (2011-04-11 15:27) [9]Универсальный метод для:
Открываем Ворд (файл)
Макрос на запись
Написали текст
Макрос стоп
Смотрим...
← →
Smile (2011-04-11 15:39) [10]YurikGL
Уже как несколько лет назад выложил информацию про это в категорию "Статьи", да и на http://articles.org.ru/ много инфы по этому вопросу
← →
Максон © (2011-04-11 16:57) [11]
> > T.Cell(1, 1).Range.Text := "qwer";"qwer" в первой таблице,
> в ячейке (1 1), есть?
Да есть, так получается.
А вот из Stringrid - никак
← →
Максон © (2011-04-11 17:01) [12]Ребята, спасибо огромное, щас буду разбираться
← →
Dennis I. Komarov © (2011-04-11 17:40) [13]
> Да есть, так получается.А вот из Stringrid - никак
Ох уж эти сказочники...
← →
Максон © (2011-04-11 18:12) [14]Все равно не получается.
var
RowCount:integer;
begin
....
T.Cell(1, 1).Range.Text:=StringGrid.Cells[1,RowCount-1];
← →
OW © (2011-04-12 08:38) [15]sg := stringgrid1;
for i := 0 to sg.rowcount - 1 do
for j := 0 to sg.colcount - 1 do
Showmessage(sg.cells[i,j]);
← →
Максон © (2011-04-12 13:30) [16]
> sg := stringgrid1;for i := 0 to sg.rowcount - 1 do for j
> := 0 to sg.colcount - 1 do Showmessage(sg.cells[i,j]);
у меня вот что вышло.
И добавляются только последние строки
var
i:integer;
T:variant;
begin
//выбираю таблицу
T := WA.ActiveDocument.Tables.Item(3);
//запускаю цикл
for i := 1 to strngrd1.RowCount-1 do
begin
// Добавляем новую строку
T.rows.add(EmptyParam);
//нумерация строк
T.Cell(1, 1).Range.Text := IntToStr(RowPoint - 1) + ".";
//ввод данных из Stringgrid
T.Cell(1, 2).Range.Text := strngrd1.Cells[0, RowPoint - 1];
T.Cell(1, 3).Range.Text := strngrd1.Cells[1, RowPoint - 1];
T.Cell(1, 4).Range.Text := strngrd1.Cells[2, RowPoint - 1];
Посоветуйте пожалуйста как правильно сделать
← →
Германн © (2011-04-12 13:43) [17]
> //запускаю цикл
Счетчик цикла i. А в теле цикла какой-то непонятный RowPoint.
← →
Максон © (2011-04-12 13:49) [18]извиняюсь вот как должно быть
var
i:integer;
T:variant;
begin
//выбираю таблицу
T := WA.ActiveDocument.Tables.Item(3);
//запускаю цикл
for i := 1 to strngrd1.RowCount-1 do
begin
// Добавляем новую строку
T.rows.add(EmptyParam);
//нумерация строк
T.Cell(1, 1).Range.Text := IntToStr(i - 1) + ".";
//ввод данных из Stringgrid
T.Cell(1, 2).Range.Text := strngrd1.Cells[0, i - 1];
T.Cell(1, 3).Range.Text := strngrd1.Cells[1, i - 1];
T.Cell(1, 4).Range.Text := strngrd1.Cells[2, i - 1];
← →
Smile (2011-04-12 14:20) [19]Странная, какая-то ветка.
Похоже, что автор ничего читать и искать не желает
:(
Мог бы зайти сюда:
http://articles.org.ru/cn/?c=92
или уж сразу сюда:
Как экспортировать StringGrid в MS Word таблицуhttp://www.kansoftware.ru/?tid=4061
← →
Dennis I. Komarov © (2011-04-12 14:40) [20]У тебя ошибка в программе, ищи...
← →
DTMail (2011-04-13 07:17) [21]А как организовать аналогичный экспорт данных из StringGrid в открытый документ Word в таблицу в документе, начиная с ячейки, в котоую установлен курсор?
← →
Dennis I. Komarov © (2011-04-13 14:52) [22]
> DTMail (13.04.11 07:17) [21]
А зачем?
Для этого буфер обмена вроде бы есть...
Хотя, вроде можно...
← →
Максон © (2011-04-14 07:09) [23]Почитав умные книжки у меня вот что получилось.
Объясните пожалуйста, как добавлять все строки.
procedure TForm2.DocbtnClick(Sender: TObject);
var
W, T, N: Variant;
iRows,Cols, i:Integer;
begin
W := CreateOleObject("Word.Application");
W.Visible:=True;
W.DisplayAlerts:=True;
try
W.Documents.Open(GetCurrentDir +"\mmm.dot",EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam);
// выбор талицы
T:=W.ActiveDocument.Tables.Item(1);
// обозначение номера строки в таблице 1
//Данные будут вноситься с 4 строки
N:=W.ActiveDocument.Tables.Item(1).Rows.Item(4);
// запуск цикла строк от 1 до последнего кол-ва в стринггриде
for i:=1 to strngrd1.RowCount-1 do
// добавление строк
T.Rows.Add(N);
//запуск цикла по строкам и столбцам
for iRows:=1 to strngrd1.RowCount-1 do
for Cols:=1 to strngrd1.ColCount-1 do
// нумерация строчек
T.Cell(iRows+3 ,1).Range.Text:= IntToStr(iRows ) + ".";
//ВОТ ДО ЭТОГО МОМЕНТА ВСЕ РАБОТАЕТ
//ЭТОТ КОД ТОЖЕ РАБОЧИЙ ТОЛЬКО ДОБАВЛЯЕТСЯ 1 СТРОКА
{T.Cell(4,2).Range.Text:= strngrd1.Cells[0,1]+#13+ strngrd1.Cells[1,1]+#13+ strngrd1.Cells[2,1];
T.Cell(4,3).Range.Text:= strngrd1.Cells[3,1];
T.Cell(4,4).Range.Text:= strngrd1.Cells[4,1];
T.Cell(4,5).Range.Text:= strngrd1.Cells[5,1];
T.Cell(4,6).Range.Text:= strngrd1.Cells[6,1];
T.Cell(4,7).Range.Text:= strngrd1.Cells[7,1]+","+#13+ strngrd1.Cells[8,1]+","+#13+ strngrd1.Cells[9,1];
T.Cell(4,8).Range.Text:= strngrd1.Cells[10,1];
T.Cell(4,9).Range.Text:= strngrd1.Cells[11,1]+#13+ strngrd1.Cells[12,1];
T.Cell(4,10).Range.Text:= strngrd1.Cells[13,1];
T.Cell(4,12).Range.Text:= strngrd1.Cells[14,1];
T.Cell(4,13).Range.Text:= strngrd1.Cells[15,1];
T.Cell(4,14).Range.Text:= strngrd1.Cells[16,1];
T.Cell(4,15).Range.Text:= strngrd1.Cells[17,1];}
finally
end;
end;
Вопрос в том как добавлять все строки из Stringgrid, ведь их количество определяется как strngrd1.RowCount.
Все перерыл, ведь запускается цикл от 1for iRows:=1 to strngrd1.RowCount-1 do
например, делал вот так
T.Cell(iRows+3,3).Range.Text:= strngrd1.Cells[3,iRows-1];
//Тут ошибка
Ребята посоветуйте пожалуйста или наведите на мысль
← →
Максон © (2011-04-14 08:30) [24]
> например, делал вот такT.Cell(iRows+3,3).Range.Text:= strngrd1.
> Cells[3,iRows-1];//Тут ошибка
при компиляции выдает ошибку
[Warning] Elector.pas(367): FOR-Loop variable "iRows" may be undefined after loop
← →
Dennis I. Komarov © (2011-04-14 09:02) [25]
> Ребята посоветуйте пожалуйста или наведите на мысль
...прицыпились к MSWord со всеми приблудами;
иницилизировали индекс_строки
пока не вышли за предел строк в SG1 делать:
начало
Таблице в Word добавить строку;
Таблица.ячейка(X, последняя):=SG1.Sells[Y, индекс_строки];
(аналогично поступить) с другими
Inc(индекс_строки);
конец;
Корректно отцепились;
Все. Переводи.
> при компиляции выдает ошибку
не вижу...
← →
OW © (2011-04-14 09:26) [26]
> Dennis I. Komarov © (14.04.11 09:02) [25]
>
>
да он просто издевается, имхо.
← →
Dennis I. Komarov © (2011-04-14 09:34) [27]
> OW © (14.04.11 09:26) [26]
Это ему не поможет... код сам писать будет ;)
← →
Максон © (2011-04-14 09:39) [28]Спасибо, Денис.
Заработало. begin и end поставил все пошло.
У меня теперь другой вопрос:
1. цикл по столбцам обязательно делать. у меня количество столбцов фиксированное - их 20.
2. не могу разобраться с индексом строки
Ребята, вы уж меня извините за тупые вопросы я чуть больше полгода на delphi подсел. Тяму не хватает
← →
Dennis I. Komarov © (2011-04-14 09:56) [29]1. Не обязательно.
2. Плохо, а чего с ним разбираться?
← →
Максон © (2011-04-14 13:57) [30]Столкнулся еще с одной проблемой
На форме есть Radiogroup пользователь вносит данные в edit-ы, выбирает из Radiogroup нужное событие "есть" или "нет" нажимает на кнопку и в Stringgrid вносится запись, далее после внесения всех данных, нажимает на кнопку "распечатать" и данные из Stringgrid экспортируются в шаблон таблицы word.
Теперь вопрос как сделать так чтобы данные из Stringgrid-а отображались в 2-х таблицах, те у кого есть событие "есть" отображались в таблице 1, а те у кого событие - "нет" в таблице 2.
procedure TForm2.DocbtnClick(Sender: TObject);
var
W, T, N: Variant;
iRows :Integer;
i:Integer;
// индекс строки
//x:string;
//s, r:Integer;
begin
W := CreateOleObject("Word.Application");
W.Visible:=True;
W.DisplayAlerts:=True;
try
W.Documents.Open(GetCurrentDir +"\mmm.dot",EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam);
// Д Л Я С О Б Ы Т И Я "ЕСТЬ"
//данные вносятся в ячейку Stringgrid, но в таблице не отображаются
if strngrd1.Cells[18, strngrd1.RowCount-1]="есть" then
begin //
// обозначение таблицы ее номера
T:=W.ActiveDocument.Tables.Item(1);
// обозначение номера строки в определенной таблице
N:=W.ActiveDocument.Tables.Item(1).Rows.Item(4);
// запуск цикла строк от 1 до последнего кол-ва в стринггриде
for i:=1 to strngrd1.RowCount-1 do
// добавление строк
T.Rows.Add(N);
// добавление строчек
//запуск цикла по строкам и столбцам
for iRows:=1 to strngrd1.RowCount-1 do
//for Cols:=1 to strngrd1.ColCount-1 do
begin
// нумерация строчек
T.Cell(iRows+3 ,1).Range.Text:= IntToStr(iRows ) + ".";
T.Cell(iRows+3,2).Range.Text:= strngrd1.Cells[0,iRows+0]+#13+ strngrd1.Cells[1,iRows+0]+#13+ strngrd1.Cells[2,iRows+0];
////////////
T.Cell(iRows+3,3).Range.Text:= strngrd1.Cells[3,iRows+0];
T.Cell(iRows+3,4).Range.Text:= strngrd1.Cells[4,iRows+0];
T.Cell(iRows+3,5).Range.Text:= strngrd1.Cells[5,iRows+0];
T.Cell(iRows+3,6).Range.Text:= strngrd1.Cells[6,iRows+0];
T.Cell(iRows+3,7).Range.Text:= strngrd1.Cells[7,iRows+0]+","+#13+ strngrd1.Cells[8,iRows+0]+","+#13+ strngrd1.Cells[9,iRows+0];
T.Cell(iRows+3,8).Range.Text:= strngrd1.Cells[10,iRows+0];
T.Cell(iRows+3,9).Range.Text:= strngrd1.Cells[11,iRows+0]+#13+ strngrd1.Cells[12,iRows+0];
T.Cell(iRows+3,10).Range.Text:= strngrd1.Cells[13,iRows+0];
T.Cell(iRows+3,12).Range.Text:= strngrd1.Cells[14,iRows+0];
T.Cell(iRows+3,13).Range.Text:= strngrd1.Cells[15,iRows+0];
T.Cell(iRows+3,14).Range.Text:= strngrd1.Cells[16,iRows+0];
T.Cell(iRows+3,15).Range.Text:= strngrd1.Cells[17,iRows+0];
end;
end;
// Д Л Я С О Б Ы Т И Я "НЕТ"
if strngrd1.Cells[18, strngrd1.RowCount-1]="нет" then
begin //
// обозначение таблицы ее номера
T:=W.ActiveDocument.Tables.Item(2);
// обозначение номера строки в определенной таблице
N:=W.ActiveDocument.Tables.Item(2).Rows.Item(4);
// запуск цикла строк от 1 до последнего кол-ва в стринггриде
for i:=1 to strngrd1.RowCount-1 do
// добавление строк
T.Rows.Add(N);
// добавление строчек
//запуск цикла по строкам и столбцам
for iRows:=1 to strngrd1.RowCount-1 do
//for Cols:=1 to strngrd1.ColCount-1 do
begin
// нумерация строчек
T.Cell(iRows+3 ,1).Range.Text:= IntToStr(iRows ) + ".";
T.Cell(iRows+3,2).Range.Text:= strngrd1.Cells[0,iRows+0]+#13+ strngrd1.Cells[1,iRows+0]+#13+ strngrd1.Cells[2,iRows+0];
////////////
T.Cell(iRows+3,3).Range.Text:= strngrd1.Cells[3,iRows+0];
T.Cell(iRows+3,4).Range.Text:= strngrd1.Cells[4,iRows+0];
T.Cell(iRows+3,5).Range.Text:= strngrd1.Cells[5,iRows+0];
T.Cell(iRows+3,6).Range.Text:= strngrd1.Cells[6,iRows+0];
T.Cell(iRows+3,7).Range.Text:= strngrd1.Cells[7,iRows+0]+","+#13+ strngrd1.Cells[8,iRows+0]+","+#13+ strngrd1.Cells[9,iRows+0];
T.Cell(iRows+3,8).Range.Text:= strngrd1.Cells[10,iRows+0];
T.Cell(iRows+3,9).Range.Text:= strngrd1.Cells[11,iRows+0]+#13+ strngrd1.Cells[12,iRows+0];
T.Cell(iRows+3,10).Range.Text:= strngrd1.Cells[13,iRows+0];
T.Cell(iRows+3,12).Range.Text:= strngrd1.Cells[14,iRows+0];
T.Cell(iRows+3,13).Range.Text:= strngrd1.Cells[15,iRows+0];
T.Cell(iRows+3,14).Range.Text:= strngrd1.Cells[16,iRows+0];
T.Cell(iRows+3,15).Range.Text:= strngrd1.Cells[17,iRows+0];
end;
end;
finally
end;
end;
Код рабочий, единственное что не могу сообразить почему он добавляет в таблицу по последней записи, т.е. если последняя запись с событием "есть", то он все данные из Stringgrid перегоняет в первую таблицу и наоборот. Видимо все дело в strngrd1.RowCount-1?
Посоветуйте пожалуйста как быть в данной ситуации?
← →
Dennis I. Komarov © (2011-04-14 14:39) [31]
> Код рабочий, единственное что ...
Ужас, а не код, даже смотреть противно...
> Посоветуйте пожалуйста как быть в данной ситуации?
Выброси это чудо и переводи [25]
← →
OW © (2011-04-14 14:57) [32]Q:почему он добавляет в таблицу по последней записи
A:
> if strngrd1.Cells[18, strngrd1.RowCount-1]="нет" then
> begin //
перевод такой
если последняя строка, 18 столбец = "нет"
то, не даем расслабляться компу дальше..
← →
Максон © (2011-04-15 09:37) [33]Все равно не получается:(
if strngrd1.Cells[18, strngrd1.RowCount-1]="нет" then
Добавляются данные только в ту таблицу по событию последней строчки.
А как сделать чтоб все строки с событием "есть" отражались в таблице1,
все строки с событием "нет" отражались в таблице 2.
← →
Dennis I. Komarov © (2011-04-15 09:52) [34]Не надо хранить данные в визуальных компонентах, создай хотя бы массив записей и храни (экспортируй) там.
З.Ы. Хотя о чем это я. Чукча писатель...
← →
Максон © (2011-04-15 09:57) [35]
> З.Ы. Хотя о чем это я. Чукча писатель...
Денис я всегда за здоровую критику, но вот оскорблять не надо.
Основ delphi не знаю, но очень хочу научится
← →
Dennis I. Komarov © (2011-04-15 10:21) [36]Ну так делай выводы...
З.Ы.
http://lurkmore.ru/%D7%F3%EA%F7%E0_%ED%E5_%F7%E8%F2%E0%F2%E5%EB%FC
← →
OW © (2011-04-15 12:01) [37]
> Максон ©
все что надо
доступ к ячейке там
W := CreateOleObject("Word.Application");
try
W.Documents.Open("C:\1.doc",EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam);
T := W.ActiveDocument.Tables.Item(1);
T.Cell(1, 1).Range.Text := "qwer";
и
доступ к ячейке тут
for i := 0 to sg.rowcount - 1 do
for j := 0 to sg.colcount - 1 do
Showmessage(sg.cells[i,j]);
остальное - логика. Элементарная.
Денис и Ваш покорный, и любой другой программист, могли бы 150 раз написать все это, но это нужно сделать Вам самому. Если Вам, конечно, это надо - стать программистом
А если нет - какие проблемы.. Если я не могу трубу отлить/выкатать, я ее покапаю в магазине, готовую и красивую.
← →
Максон © (2011-04-26 11:44) [38]Здраствуйте, снова мучаюсь со Stringgrid-ом
При вводе в Stringgrid данных , например, 2 строки с событием "есть" и 2 строки с событием "нет" в 2-х таблицах ворд добавляются по 4 строки и нумерация идет дальше, в таблице1 нумерация 1,2 , в таблице 2 нумерация 3,4.
Подскажите, пожалуйста, что здесь неверно?procedure TForm2.DocbtnClick(Sender: TObject);
var
W, T,L,M, N: Variant;
iRows :Integer;
begin
W := CreateOleObject("Word.Application");
W.Visible:=True;
W.DisplayAlerts:=True;
try
W.Documents.Open(GetCurrentDir +"\mmm.dot",EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam);
// обозначение таблицы ее номера
T:=W.ActiveDocument.Tables.Item(1);
// обозначение номера строки в определенной таблице
N:=W.ActiveDocument.Tables.Item(1).Rows.Item(4);
L:=W.ActiveDocument.Tables.Item(2);
// обозначение номера строки в определенной таблице
M:=W.ActiveDocument.Tables.Item(2).Rows.Item(4);
//запуск цикла по строкам, т.к. количество столбцов фиксировано
for iRows:=1 to strngrd1.RowCount-1 do
begin
T.Rows.Add(N);//добавление строк в таблице 1
L.Rows.Add(M);//добавление строк в таблице 2
//если 19 колонка и строка = "есть" тогда
if strngrd1.Cells[19, iRows]="есть" then
begin
//нумерация строкв таблице 1
T.Cell(iRows+3 ,1).Range.Text:= IntToStr(iRows) + ".";
//заполнение таблицы данными
//.....
end;
//если 19 колонка и строка = "нет" тогда
if strngrd1.Cells[19, iRows]="нет" then
begin
//нумерация строк в таблице 2
L.Cell(iRows+3 ,1).Range.Text:= IntToStr(iRows) + ".";
//заполнение таблицы данными
end;
end;
finally
end;
end;
← →
brother © (2011-04-26 11:48) [39]> if strngrd1.Cells[19, iRows]="есть" then
> if strngrd1.Cells[19, iRows]="нет" then
какое будет поведение если там бкдет стоять, например: Есть/Нет?
← →
Максон © (2011-04-26 11:58) [40]Если будет стоять "есть", то все строки strngrd1.Cells[19, iRows] должны отображаться в таблице1, а если "нет" , то в таблице2.
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2011.08.07;
Скачать: [xml.tar.bz2];
Память: 0.59 MB
Время: 0.004 c