Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.56 MB
Время: 0.014 c
3-1196832865
Тест_Новичок
2007-12-05 08:34
2008.05.11
Как создать таблицу в формате InterBase?


2-1207913235
Rhammer
2008-04-11 15:27
2008.05.11
Проблемы при переборе символов в строке


15-1206815238
Дмитрий С
2008-03-29 21:27
2008.05.11
беспроводная камера + смарт N93 + 3G


2-1208170266
AndrewG
2008-04-14 14:51
2008.05.11
memo


2-1207832097
Polar
2008-04-10 16:54
2008.05.11
Направление текста в QRLabel