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

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

TTable [D6, MSSQL]


DimMih ©   (2006-04-19 17:04:00) 

Работаю с компопентом TTable, у которого есть свойство TableType= ttASCII - текстовая таблица, в которой поля разделяются запятыми и заключаются в кавычки. Т.е. есть текстовый файл(текстовая таблица) данные из которого нужно перебросить в таблицу базы данных SQL. Вот файл и код

"Заготівельна дільниця","Иванов В. О.","01.03.06","2:14:44"
"Заготівельна дільниця","Башинський И. А.","01.03.06","8:02:44"
"Заготівельна дільниця","Петренко В. К.","01.03.06","8:14:44"
if OpenDialog1.Execute then
 VremjaTable:=TTable.Create(nil);
 with VremjaTable do  begin
    Active:=false;
    TableName:=OpenDialog1.FileName;
    TableType:=ttASCII;
 end;
   try
    VremjaTable.Open;
    VremjaTable.First;
    while not VremjaTable.Eof do begin
      if InsertQuery.Active then InsertQuery.Active:=false;
         InsertQuery.Parameters[0].Value:=VremjaTable.Fields[0].Value;
         InsertQuery.Parameters[1].Value:=VremjaTable.Fields[1].Value;
         InsertQuery.Parameters[2].Value:=VremjaTable.Fields[2].Value;
         InsertQuery.Parameters[3].Value:=VremjaTable.Fields[3].Value;
         InsertQuery.ExecSQL;
         VremjaTable.Next;
  end;
В процессе выполнения программы происходит ошибка. Подскажите пожалуйста в чём ошибка?


YurikGL   (2006-04-20 22:42:00) [1]


> DimMih ©   (20.04.06 09:43) [12]

Попробуйте его явно присвоить перед присвоением параметров... Если не получится - приведите код


DimMih   (2006-04-20 09:43:00) [2]

Уважаемый YurikGL, текст запроса находится  не в самом коде, а в компоненте TADOQuery. Проблема я думаю в "текстовой таблице". При открытии таблицы не определяются её поля. VremjaTable.FieldCount=1, а должно быть 4


DimMih   (2006-04-20 09:29:00) [3]

Для Desdechado:"Оно в компоненте"


YurikGL   (2006-04-19 21:55:00) [4]


> DimMih ©   (19.04.06 17:47) [7]

Приведи код целиком с

> Insert into WorkTime
> ( Uchastok, Ispolnitel, Data, Vremja) values
> ( :Uchastok, :Ispolnitel, :Data, :Vremja)

и последующим присвоением параметров.


Плохиш   (2006-04-19 17:59:00) [5]


> DimMih ©   (19.04.06 17:47) [7]

Так чему равно InsertQuery.Parameters.Count?

PS. А из строчки if InsertQuery.Active then InsertQuery.Active:=false;проверку можно выкинуть, да и саму строчку надо вынести за цикл.


Desdechado   (2006-04-19 17:54:00) [6]

и где оно в тексте?


DimMih   (2006-04-19 17:47:00) [7]

Insert into WorkTime
( Uchastok, Ispolnitel, Data, Vremja) values
( :Uchastok, :Ispolnitel, :Data, :Vremja)


Плохиш   (2006-04-19 17:41:00) [8]


> А это не параметры????

Нет. Это попытка присвоить что-то коллекции Parameters. Но вот это "List index out of bounds (0)"говорит, что в коллекции элементов нет. Начни читать чего-нибуть.


DimMih   (2006-04-19 17:38:00) [9]

А это не параметры????

if InsertQuery.Active then InsertQuery.Active:=false;
        InsertQuery.Parameters[0].Value:=VremjaTable.Fields[0].Value;
        InsertQuery.Parameters[1].Value:=VremjaTable.Fields[1].Value;
        InsertQuery.Parameters[2].Value:=VremjaTable.Fields[2].Value;
        InsertQuery.Parameters[3].Value:=VremjaTable.Fields[3].Value;
        InsertQuery.ExecSQL;


Плохиш   (2006-04-19 17:34:00) [10]

Параметров в sql-запросе нет.


DimMih   (2006-04-19 17:32:00) [11]

При присвонии значения первого параметра запроса выдается ошибка "List index out of bounds (0)".


Плохиш   (2006-04-19 17:26:00) [12]


> В процессе выполнения программы происходит ошибка. Подскажите
> пожалуйста в чём ошибка?

T.e. ты предлагаешь нам установить mssql-сервер, делфи, создать базу данных, в этой базе какую-нибуть таблицу, создать проект в делфи, вставить туда твой код, попытаться его выполнить и если возникнет ошибка, то постараться её решить и о решении сообщить тебе? Хорошо я готов за это взяться, но только после предоплаты 2000 евро.


Desdechado   (2006-04-19 17:22:00) [13]

шел по улице, стукнули по голове
подскажите, за что?


Наверх

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