Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.05.11;
Скачать: [xml.tar.bz2];

Вниз

Проблема 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.008 c
2-1208237932
John_Korsh
2008-04-15 09:38
2008.05.11
Доступ к портам под XP.


2-1207991462
Alex8
2008-04-12 13:11
2008.05.11
Table


3-1196078709
Тимур
2007-11-26 15:05
2008.05.11
SQL.ADD выдает ошибку


2-1207819678
Альберт
2008-04-10 13:27
2008.05.11
Поиск дат рождения на заданную дату


15-1206587384
slider007
2008-03-27 06:09
2008.05.11
С днем рождения ! 27 марта 2008 четверг





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский