Текущий архив: 2008.05.11;
Скачать: CL | DM;
Вниз
Проблема c NULL полями Найти похожие ветки
← →
Gore (2008-04-14 11:26) [0]Есть два поля в таблице DBF которые обозначены NULL делфи не может открыть эту таблицу. Подскажите что можно сделать.
← →
Sergey13 © (2008-04-14 11:36) [1]Не понял? Два поля названы одинаково?
← →
Gore (2008-04-14 11:40) [2]нет два различных поля помечены как НУЛЛ из за них не могу из Делфи подконнектится к таблице убираю нулл можно. Как это можно сделать программно?
← →
Johnmen © (2008-04-14 11:41) [3]Почему не можешь? Откуда это видно?
← →
Gore (2008-04-14 11:42) [4]из фокса все видно прекрасно а делфи заявляет проблема с индексами. но стоит только убрать у полей галочку НУЛЛ то делфи таблицу открывает.
← →
Johnmen © (2008-04-14 11:44) [5]
> а делфи заявляет проблема с индексами
Прям так и заявляет?
← →
Gore (2008-04-14 11:47) [6]ага пишет "Corrupt table/index header"
← →
Johnmen © (2008-04-14 11:50) [7]Так убери "у полей галочку НУЛЛ".
← →
Gore (2008-04-14 11:52) [8]у меня проблема в 81 папке содержаться таблицы с которых я сливаю данные и у всех них есть эти галочки. Так что у всех не уберешь геморно. Вопрос как это сделать программно?
← →
Johnmen © (2008-04-14 12:01) [9]Что за БД? И где ты "убираешь у полей галочку НУЛЛ"?
← →
Gore (2008-04-14 12:02) [10]бд FoxPro. Галочку убираю в TABLE DESIGNER
← →
Anatoly Podgoretsky © (2008-04-14 12:25) [11]> Gore (14.04.2008 12:02:10) [10]
Борланд не обещал работоспособности баз ФоксПро выше версии 2.5
← →
Gore (2008-04-14 13:41) [12]так что делать?
← →
Anatoly Podgoretsky © (2008-04-14 13:44) [13]Перейти на АДО и правильного провайдера.
← →
Gore (2008-04-14 13:49) [14]с АДО глюк Ругается на непредвиденную ошибку драйвера внешней базы данных (8961). и DE тут не причем!
← →
Gore (2008-04-14 13:50) [15]BDE работает ровно
← →
Anatoly Podgoretsky © (2008-04-14 13:53) [16]> Gore (14.04.2008 13:49:14) [14]
Это уже твоя ошибка
← →
Gore (2008-04-14 13:59) [17]В смысле?
← →
Gore (2008-04-14 14:00) [18]Он мне просто подконнектится не дает убираю все ровно
← →
Anatoly Podgoretsky © (2008-04-14 14:13) [19]Нам погадать на ромашке?
← →
Gore (2008-04-15 09:21) [20]могу скинуть код если надо
← →
Gore (2008-04-15 09:22) [21]var
x:integer;//Счетчик для цикла папок
z:integer;//Счетчик таблиц
i,j,lCount: Integer;
Patch,TekN:string;
PatchImp,PatchExp:string;
begin
Patch:=ApplicationPath;
if bsSkinSpinEdit1.Value<bsSkinSpinEdit2.Value then
Begin
memo3.Lines.Clear;
BsSkinGauge1.MinValue:=0;
BsSkinGauge1.MaxValue:=BsSKinListbox1.Items.Count-1;
BsSkinGauge1.Value:=BsSkinGauge1.MinValue;
for z:=0 to BsSKinListbox1.Items.Count-1 do
begin
//коннектимся к базе импорта
bsSkinLabel1.Caption:=BsSKinListbox1.Items.Strings[z];
ImpTC.Connected:=False;
ImpTC.DefaultDir:="NewData\";
ImpTC.Connected:=true;
// ImpT.DatabaseName:="C:\NewData\";
ImpT.SQL.Text:="Select * from "+BsSKinListbox1.Items.Strings[z];
if Memo1.Lines.Strings[z]<>"" then
ImpT.SQL.Text:=ImpT.SQL.Text+" "+Memo1.Lines.Strings[z];
try
ImpT.Open;
except
showmessage("Konnekt proshol uspechno");
end;
//Циклично коннектимся ко всем базам и берем инфу
for x:=strtoint(bsSkinSpinEdit1.Text)
to strtoint(bsSkinSpinEdit2.Text) do
begin
Tekn:=inttostr(x);
ExpTC.Connected:=false;
ExpTC.DefaultDir:=BsSkinEdit1.Text+"\"+Tekn+"\"+BsSkinEdit2.Text;
ExpTC.Connected:=True;
ExpT.SQL.Text:="Select * from "+BsSKinListbox1.Items.Strings[z]+" "+Memo1.Lines.Strings[z];
memo3.Lines.add(ExpTC.DefaultDir);
try
ExpT.Open;
ImpT.Last;
ExpT.First;
except
showmessage("Konnekt proshol uspechno");
end;
lCount := ExpT.FieldCount;
For i:=0 to ExpT.RecordCount-1 do
Begin
ImpT.Insert;
for j:=0 to LCount-1 do
if (not ExpT.Fields[j].IsNull)and(ExpT.Fields[j].CanModify) then
ImpT.FieldByName(ExpT.Fields[j].FieldName).Assign(ExpT.Fields[j]);
ExpT.Next;
end;
ExpT.Close;
Memo3.Lines.SaveToFile("Data.txt");
end;
BsSkinGauge1.Value:=BsSkinGauge1.Value+1;
//Сохраняеми вырубаем базу импорта
ImpT.Post;ImpT.Close;
end;
{for x:=strtoint(bsSkinSpinEdit1.Text)
to strtoint(bsSkinSpinEdit2.Text) do
begin
//Коннект к базе и перекачка
PatchImp:=Patch+"NewData\";
Tekn:=inttostr(x);
PatchExp:=BsSkinEdit1.Text+Tekn+"\"+BsSkinEdit2.Text;
//Коннект к списку таблиц
for z:=0 to BsSKinListbox1.Items.Count-1 do
begin
ImpTC.Connected:=False;
ImpTC.DefaultDir:=PatchImp;
ImpTC.Connected:=true;
ExpTC.Connected:=false;
ExpTC.DefaultDir:=PatchExp;
ExpTC.Connected:=True;
bsSkinLabel1.Caption:=BsSKinListbox1.Items.Strings[z];
ImpT.SQL.Text:="Select * from "+BsSKinListbox1.Items.Strings[z];
ExpT.SQL.Text:="Select * from "+BsSKinListbox1.Items.Strings[z]+" "+Memo1.Lines.Strings[z];
// ImpT.TableName:=PatchImp+BsSKinListbox1.Items.Strings[z];
// ExpT.TableName:=PatchExp+BsSKinListbox1.Items.Strings[z];
memo3.Lines.add(ExpTC.DefaultDir);
try
ImpT.Open;ExpT.Open;
//Копируем записи из таблицы в таблицу
if ExpT.RecordCount>0 then ExpT.First;
if ImpT.RecordCount>0 then ImpT.Last;
lCount := ExpT.FieldCount;
For i:=1 to ExpT.RecordCount do
Begin
bsSkinLabel2.Caption:="Номер записи "+inttostr(i);
ImpT.Insert;
for j:=1 to LCount do
if (not EXPT.Fields[j].IsNull) and (EXPT.Fields[j].CanModify) then
ImpT.FieldByName(EXPT.Fields[j].FieldName).Assign(EXPT.Fields[j]);
ExpT.Next;
end;
except
if ExpT.RecordCount>0 then ExpT.First;
if ImpT.RecordCount>0 then ImpT.Last;
lCount := ExpT.FieldCount;
For i:=1 to ExpT.RecordCount do
Begin
bsSkinLabel2.Caption:="Номер записи "+inttostr(i);
ImpT.Insert;
for j:=1 to LCount do
if (not EXPT.Fields[j].IsNull) and (EXPT.Fields[j].CanModify) then
ImpT.FieldByName(EXPT.Fields[j].FieldName).Assign(EXPT.Fields[j]);
ExpT.Next;
end;
end;
ImpT.Post;
// if Impt.RecordCount>0 then ImpT.PackTable;
ImpT.Close;ExpT.Close;
end;
//Коннект к списку таблиц
//Коннект к базе и перекачка
BsSkinGauge1.Value:=BsSkinGauge1.Value+1;
end;
}
Memo3.Lines.SaveToFile("Data.txt");
MSG1.MessageDlg("Соединение данных прошло успешно!",mtInformation,[mbOk], 0);
end
else
MSG1.MessageDlg("Неверно укзан диапазон!",mtInformation,[mbOk], 0);
← →
Gore (2008-04-15 09:22) [22]тут два варианта и оба не пашут
← →
Gore (2008-04-15 09:23) [23]сейчас начал по новой вскоре скину 3 вариант
← →
ЮЮ © (2008-04-15 11:04) [24]> try
> ExpT.Open;
> ImpT.Last;
> ExpT.First;
> except
> showmessage("Konnekt proshol uspechno")
> ;
> end;
И как при таком коде можно не добиться успешного коннекта? :)
← →
Gore (2008-04-15 11:11) [25]да можно глючит ка ни в чем не бывало. Уже с 4-ми компонентами пытаюсь
← →
Игорь Шевченко © (2008-04-15 11:14) [26]
> try
> ExpT.Open;
> ImpT.Last;
> ExpT.First;
> except
> showmessage("Konnekt proshol uspechno");
>
> end;
в цитатник
← →
Gore (2008-04-15 11:24) [27]что не нравиться?
← →
Palladin © (2008-04-15 11:42) [28]открыл дверь, зашел, дошел до стены, споткнулся, упал, получил сотрясение моска и всем сказал "все успешно"
← →
Gore (2008-04-15 12:00) [29]да мне без разницы что было писать лишь бы сообщение выдал при ошибке
← →
Gore (2008-04-15 12:18) [30]
var
i,j,z,k:integer;//счетчики
DN,DC:integer;//Диапазон значений
BS:string;//Текущая таблица
Dir:string;//Путь к базе экспорта
lCount:integer;//Количество столбцов
begin
//начало и конец диапазона
DN:=strtoint(bsSkinSpinEdit1.Text);
DC:=strtoint(bsSkinSpinEdit2.Text);
//начало и конец диапазона
//Проверка введеного диапазона
if DN>DC then
MSG.MessageDlg("Диапазон был указан неверно",mtInformation,[mbOk], 0)
else
//Диапазон верен продолжаем работу
//Проверка на таблицы
if SPS.Items.Count=0 then
MSG.MessageDlg("Не указанна ни одна таблица!",mtInformation,[mbOk], 0)
else
//список таблиц имеется
begin
//Циклично коннектимся к каждой их таблиц в списке
for i:=0 to SpS.Items.Count-1 do
begin
BS:=SPS.Items.Strings[i];//текущая таблица
//Коннектимся к таблице импорта
try
ImpTCon.Connected:=false;
ImpTCon.DefaultDir:="NewData\";
ImpTCon.Connected:=true;
ImpT.Close;
ImpT.FoxConnect:=ImpTCon;
ImpT.SQL.Text:="Select * from "+BS;
ImpT.Open;
except
MSG.MessageDlg("Не удалось подключиться к таблице!",mtInformation,[mbOk], 0);
break;
end;
//Коннектимся к таблице импорта
//Циклично прогоняем все таблицы экспорта
//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\//
//Получаем путь к базам данных
if Initdir.Text[Length(Initdir.Text)]<>"\"
then dir:=Initdir.Text+"\" else dir:=Initdir.Text;
showmessage(dir);
//\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\//
//Для прогресса
Val.MinValue:=DN-1;
Val.MaxValue:=DC;
Val.Value:=DN-1;
//Для прогресса
for j:=DN to DC do
begin
//Коннектимся к таблице экспорта
try
ExpTCon.Connected:=false;
ExpTCon.DefaultDir:=Dir+inttostr(j)+"\"+LCDir.Text;
ExpTCon.Connected:=true;
ExpT.Close;
ExpT.FoxConnect:=ExpTCon;
ExpT.SQL.Text:="Select * from "+BS;
ExpT.Open;
//перебрасываем данные из одной таблицы в другую
lCount := ExpT.FieldCount;
ExpT.First;
For z:=0 to ExpT.RecordCount-1 do
Begin
ImpT.Insert;
for k:=0 to LCount-1 do
if (not ExpT.Fields[k].IsNull)and(ExpT.Fields[k].CanModify) then
ImpT.FieldByName(ExpT.Fields[k].FieldName).Value:=Expt.Fields[k].Value;
ExpT.Next;
ImpT.Post;
end;
Val.Value:=Val.Value+1;
except
MSG.MessageDlg("Не удалось подключиться к таблице!",mtInformation,[mbOk], 0);
break;
end;
//Коннектимся к таблице экспорта если все произошло удачно
end;
//вырубаем таблицу импорта
ImpT.Close;
//Циклично прогоняем все таблицы экспорта
end;
//Циклично коннектимся к каждой их таблиц в списке
end;
end;
от писанный кодв чем ошибка?
← →
app © (2008-04-15 12:39) [31]> Gore (15.04.2008 12:18:30) [30]
Хватит замусоривать конференцию.
← →
Gore (2008-04-15 13:05) [32]Удалено модератором
Примечание: Зачем ждать?
← →
sniknik © (2008-04-15 13:09) [33]> да мне без разницы что было писать лишь бы сообщение выдал при ошибке
тогда вообще ничего не пиши..., а в ошибке "по умолчанию" скрытой твоим кодом часто не только просто сообщение о том что она произошла, а еще и ее причина.
вообще за такой идиотский код с закрытием оригинальных и подстановкой "пустышек" (по смыслу), в некоторых местах увольняют...
> от писанный кодв чем ошибка?
сказано еще в Anatoly Podgoretsky [11], [13]
причина не измен6иться сколько бессмысленного кода не приводи.
> app если такой умный скажи где ошибка и закроем тогда тему сразу
если ты такой глупый то без толку
Страницы: 1 вся ветка
Текущий архив: 2008.05.11;
Скачать: CL | DM;
Память: 0.54 MB
Время: 0.007 c