Есть таблица, созданная вот так:
ADO_CR_TABLE: TADOQuery;
| Код | ADO_CR_TABLE.SQL.Add('CREATE TABLE '+Edit2.Text); ADO_CR_TABLE.SQL.Add('( ID int IDENTITY(1,1) PRIMARY KEY,'); ADO_CR_TABLE.SQL.Add('STATUS varchar(15),'); ADO_CR_TABLE.SQL.Add('DATA_NORILSK datetime,'); ADO_CR_TABLE.SQL.Add('DATA_PRIXODA datetime,'); ADO_CR_TABLE.SQL.Add('TOVAR varchar(200) NOT NULL,'); ADO_CR_TABLE.SQL.Add('SN varchar(25),'); ADO_CR_TABLE.SQL.Add('POCTAVHIK varchar(25),'); ADO_CR_TABLE.SQL.Add('DATA_SDAHI datetime,'); ADO_CR_TABLE.SQL.Add('KOMENT1 varchar(1000),'); ADO_CR_TABLE.SQL.Add('DATA_RESULT datetime,'); ADO_CR_TABLE.SQL.Add('DATA_ZABR datetime,'); ADO_CR_TABLE.SQL.Add('OPERATION varchar(25),'); ADO_CR_TABLE.SQL.Add('KOMENT2 varchar(255),'); ADO_CR_TABLE.SQL.Add('PRICE numeric(11,2),'); ADO_CR_TABLE.SQL.Add('SUMMA_BALANS numeric(11,2),'); ADO_CR_TABLE.SQL.Add('DATA_UHOD datetime,'); ADO_CR_TABLE.SQL.Add('POLE_RES1 tinyint DEFAULT 0)'); ADO_CR_TABLE.ExecSQL;
|
Стоит задача перевести базу из PARADOX в MS SQL SERVER. Делаю это так:
| Код | procedure TForm1.Button9Click(Sender: TObject); var tabl:TTable; s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16:string; begin tabl:=TTable.Create(nil); tabl.DatabaseName:=ExtractFilePath(Edit6.Text); tabl.TableType:=ttParadox; tabl.TableName:=ExtractFileName(Edit6.Text); tabl.Active:=true; if ADOConnection1.Connected then ADOConnection1.Close; connect_to_server(ComboBox1.Text,Edit1.Text,Edit3.Text,Edit4.Text,ADOConnection1); tabl.DisableControls; tabl.First; while not tabl.Eof do begin if tabl['STATUS']<>Null then s1:=tabl['STATUS'] else s1:=''; if tabl['DATA_NORILSK']<>Null then s2:=tabl['DATA_NORILSK'] else s2:=''; if tabl['DATA_PRIXODA']<>Null then s3:=tabl['DATA_PRIXODA'] else s3:=''; s4:=tabl['TOVAR']; if tabl['SN']<>Null then s5:=tabl['SN'] else s5:=''; if tabl['POCTAVHIK']<>Null then s6:=tabl['POCTAVHIK'] else s6:=''; if tabl['DATA_SDAHI']<>Null then s7:=tabl['DATA_SDAHI'] else s7:=''; if tabl['KOMENT1']<>Null then s8:=tabl['KOMENT1'] else s8:=''; if tabl['DATA_RESULT']<>Null then s9:=tabl['DATA_RESULT'] else s9:=''; if tabl['DATA_ZABR']<>Null then s10:=tabl['DATA_ZABR'] else s10:=''; if tabl['OPERATION']<>Null then s11:=tabl['OPERATION'] else s11:=''; if tabl['KOMENT2']<>Null then s12:=tabl['KOMENT2'] else s12:=''; if tabl['PRICE']<>Null then s13:=tabl['PRICE'] else s13:='0'; if tabl['SUMMA_BALANS']<>Null then s14:=tabl['SUMMA_BALANS'] else s14:='0'; if tabl['DATA_UHOD']<>Null then s15:=tabl['DATA_UHOD'] else s15:=''; if tabl['POLE_RES1']<>Null then s16:=tabl['POLE_RES1'] else s16:='0';
ADO_CR_TABLE.SQL.Clear; ADO_CR_TABLE.SQL.Add('INSERT INTO '+Edit2.Text+' (STATUS,DATA_NORILSK,DATA_PRIXODA,TOVAR,SN,'); ADO_CR_TABLE.SQL.Add('POCTAVHIK,DATA_SDAHI,KOMENT1,DATA_RESULT,DATA_ZABR,OPERATION, '); ADO_CR_TABLE.SQL.Add('KOMENT2,PRICE,SUMMA_BALANS,DATA_UHOD,POLE_RES1) '); ADO_CR_TABLE.SQL.Add('VALUES ('+QuotedStr(s1)+','+QuotedStr(s2)+','+QuotedStr(s3)+','+QuotedStr(s4)+','); ADO_CR_TABLE.SQL.Add(QuotedStr(s5)+','+QuotedStr(s6)+','+QuotedStr(s7)+','+QuotedStr(s8)+','); ADO_CR_TABLE.SQL.Add(QuotedStr(s9)+','+QuotedStr(s10)+','+QuotedStr(s11)+','+QuotedStr(s12)+','); ADO_CR_TABLE.SQL.Add(s13+','+s14+','+QuotedStr(s15)+','+s16+')'); ADO_CR_TABLE.ExecSQL; ADO_CR_TABLE.Close; tabl.Next; end; tabl.Free; end;
|
В итоге получаю ошибку: The conversion of char data type to a datatime data type resulted in an out-of-range datatime value |