| 
 | 
| 
 
Манипуляции таблицами SQL из VisualFoxPro 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Никак не получается из VisualFoxPro(6.0 SP3) выполнить манипуляции  в SQL в целом таблицами, а не построчно, в частности не идет выполнение такой программки: set safety off ncnnct=0 public array RESUL(100,2) store 1 TO RESUL public perem3 perem='ДА' perem2='2050/01/01' ncnnct=sqlconnect('source') sqlexec(ncnnct,'select a.id_usr,b.vid; from bankr a, unit b; where a.id_usr=b.id_usr; and (b.vid=131 or b.vid=181 or b.vid=585 or b.vid=591); and b.dat_stop=?perem2; into array RESUL') sqlexec(ncnnct,'insert into promej from ARRAY RESUL') sqldisconnect(ncnnct) Вообще-то мне надо из двух таблиц SQL сформировать третью, управляя из VPF,но VPF, как я понял, это не позволяет. Тогда я придумал обходной вариант, но он не срабатывает. ПОМОГИТЕ, КТО МОЖЕТ, "ЧАЙНИКУ" ! ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 03.04.2003, 15:29 | 
  
  
  
   | 
||
| 
 
Манипуляции таблицами SQL из VisualFoxPro 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Нужно почитать хелп про функцию sqlexec. Вопросы нужно задавать подробно, в частности нужно было написать код ошибки. строка "into array RESUL" лишняя. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 03.04.2003, 15:34 | 
  
  
  
   | 
||
| 
 
Манипуляции таблицами SQL из VisualFoxPro 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  В том то и дело, что мне надо сохранить результат SELECTа. Хочу в RESUL, но не получается ни результата, ни сообщения об ошибке. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 03.04.2003, 15:56 | 
  
  
  
   | 
||
| 
 
Манипуляции таблицами SQL из VisualFoxPro 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Ещё раз. Всё что делает sqlexec это передаёт серверу текстовую строку с скл-командой и получает результат. Работа твоего кода: первый sqlexec - выбор данных в массив на сервере второй sqlexec - вставка данных в таблицу на сервере из массива на клиенте понятное дело что ничего не вставляется. Мож ты как-то не так сообщение об ошибке смотриш? По-моему там ещё и синтаксис скл комманд неверный. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 03.04.2003, 16:11 | 
  
  
  
   | 
||
| 
 
Манипуляции таблицами SQL из VisualFoxPro 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Сообщение об ошибке можно узнать разобрав массив результата возвращаемого sqlexec при помощи функции AERROR(), но сам синтаксис запроса просто не верный и он не выполняется. Вся манипуляция решается созданием таблицы на стороне сервера и вставкой результатов запроса в неё  без получения результатов на клиента . Естественно ни каких массивов там не может быть... ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 04.04.2003, 09:35 | 
  
  
  
   | 
||
| 
 
Манипуляции таблицами SQL из VisualFoxPro 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  CHAGOSERG Мне как раз и нужно создать из VFP третью таблицу на сервере из двух таблиц на том же сервере, но что-то не получается! Может это ограничение VFP 6.O ? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 04.04.2003, 10:21 | 
  
  
  
   | 
||
| 
 
Манипуляции таблицами SQL из VisualFoxPro 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  А мож это твоё ограничение? Тебе ж сказали: то что ты делаеш - неправильно. Тебе нужно выполнить что-то вроде select ... from ... into table ... или что-то подобное, в хелпе от мс скл смотри. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 04.04.2003, 11:15 | 
  
  
  
   | 
||
| 
 
Манипуляции таблицами SQL из VisualFoxPro 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  первое действие: создаёшь таблицу в БД lcSQLcommand="CREATE TABLE mytab(....)" sqlexec(ncnnct,lcSQLcommand) второе действие: вставляешь записи в неё согласно твоего условия lcSQLcommand="INSERT into mytab (...) SELECT .... FROM .... WHERE ..." sqlexec(ncnnct,lcSQLcommand) тип параметров, передаваемых из VFP (те, что после ?) должен соответствовать типу данных на сервере ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 04.04.2003, 11:30 | 
  
  
  
   | 
||
| 
 
Манипуляции таблицами SQL из VisualFoxPro 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  ОТВЕТ CHAGOSERG В том то и дело, что хотел сохранить запрос-ТABLE в массиве переменных, как указано на возможность в HELP( так как сохранить на сервере в виде TABLE HELPом не позволяется ). Сложный (вложенный) запрос ncnnct=0 public perem3 perem2='2050/01/01' ncnnct=sqlconnect('resource') SQLEXEC(ncnnct,'create table DATARESU (id_usr INT,vid INT)') mcomm=' ' mcomm=mcomm+'insert into DATARESU(id_usr,vid)' ***mcomm=mcomm+'values(1001246,131)' mcomm=mcomm+'select a.id_usr,b.vid' mcomm=mcomm+'from bankr a, unit b' mcomm=mcomm+'where a.id_usr=b.id_usr' mcomm=mcomm+'and (b.vid=131 or b.vid=181 or b.vid=585 or b.vid=591)' mcomm=mcomm+'and b.dat_stop=?perem2' mcomm=mcomm+')' sqlexec(ncnnct,mcomm) ?aerror() sqlexec(ncnnct,'select * from DATARESU') BROW sqldisconnect(ncnnct) дает ошибку VFP 'Too few arguments'. А простой insert, отмеченный *** идет спокойно. Может это ограничение VFP 6.0? И никак его обойти не могу! Мне и надо то из двух TABLE сформировать на сервере же третью TABLE, но делать это из VFP! Никак не получается простое "чайное" дело! ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 04.04.2003, 11:53 | 
  
  
  
   | 
||
| 
 
Манипуляции таблицами SQL из VisualFoxPro 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  мда... посмотри почту это первое ;) второе - в строке запроса нужно соблюдать расстановку и пробелов тоже ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 04.04.2003, 12:05 | 
  
  
  
   | 
||
| 
 
Манипуляции таблицами SQL из VisualFoxPro 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  CHAGOSERG Не могу общаться по ICQ! Не установлен. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 04.04.2003, 12:47 | 
  
  
  
   | 
||
| 
 
Манипуляции таблицами SQL из VisualFoxPro 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  что же с вами с певцами делать... (с) Масяня :) в аналайзере у тебя всё это отрабатывает? mcomm="insert into DATARESU(id_usr,vid) " mcomm=mcomm+"select a.id_usr,b.vid " mcomm=mcomm+"from bankr a, unit b " mcomm=mcomm+"where a.id_usr=b.id_usr " mcomm=mcomm+"and (b.vid=131 or b.vid=181 or b.vid=585 or b.vid=591) " mcomm=mcomm+"and b.dat_stop=?perem2" обрати внимание на пробелы и на отсутствие скобки которая у тебя стоит в конце строки ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 04.04.2003, 13:05 | 
  
  
  
   | 
||
| 
 
Манипуляции таблицами SQL из VisualFoxPro 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  CHAGOSERGу Вот такой запрос проходит в SQL Query Analyzer: drop table DATARESU GO create table DATARESU (id_usr int, vid smallint) go insert into DATARESU (id_usr,vid) select a.id_usr,b.vid from bankr a, unit b where a.id_usr=b.id_usr and (b.vid=131 or b.vid=181 or b.vid=585 or b.vid=591) and b.dat_stop='2050/01/01' GO select * from DATARESU а такая программка в VFP не проходит: ncnnct=0 public perem3 perem3='2050/01/01' ncnnct=sqlconnect('cheboks') sqlexec(ncnnct,' delete from DATARESU ') sqlexec(ncnnct,"insert into DATARESU (id_usr,vid) ; select a.id_usr,b.vid ; from bankr a, unit b ; where a.id_usr=b.id_usr ; and (b.vid=131 or b.vid=181 or b.vid=585 or b.vid=591) and b.dat_stop=?perem3' ") sqlexec(ncnnct,' select * from DATARESU') ?aerror() BROW sqldisconnect(ncnnct) хоть ты тресни! На INSERT дает VFP ошибку "непонятная фраза". ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 04.04.2003, 16:33 | 
  
  
  
   | 
||
| 
 
Манипуляции таблицами SQL из VisualFoxPro 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Мне сейчас плохо станет. После and (b.vid=131 or b.vid=181 or b.vid=585 or b.vid=591) нет точки с запятой. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 04.04.2003, 16:41 | 
  
  
  
   | 
||
| 
 
Манипуляции таблицами SQL из VisualFoxPro 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  sqlexec(ncnnct,"insert into DATARESU (id_usr,vid) ;  select a.id_usr,b.vid ; from bankr a, unit b ; where a.id_usr=b.id_usr ; and (b.vid=131 or b.vid=181 or b.vid=585 or b.vid=591) and b.dat_stop=?perem3 ' ") sqlexec(ncnnct,"insert into DATARESU (id_usr,vid) ; select a.id_usr,b.vid ; from bankr a, unit b ; where a.id_usr=b.id_usr ; and (b.vid=131 or b.vid=181 or b.vid=585 or b.vid=591) ; and b.dat_stop=?perem3") ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 04.04.2003, 16:42 | 
  
  
  
   | 
||
| 
 
Манипуляции таблицами SQL из VisualFoxPro 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  во весело  этак мы будем на 10 страницах все точки-запятые-пробелы-кавычки разжёвывать ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 04.04.2003, 17:42 | 
  
  
  
   | 
||
| 
 
Манипуляции таблицами SQL из VisualFoxPro 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Всем спасибо! Еще раз вашей помощью убедился, что проблемы "ЧАЙНИКА"- его собственные ошибки! ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 07.04.2003, 09:11 | 
  
  
  
   | 
||
| 
 
Манипуляции таблицами SQL из VisualFoxPro 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  ТОЧНЕЕ: запрос INSERT INTO mytable3 SELECT FROM mytable1,mytable2 ИМЕВШЕЙСЯ В МОЕМ РАСПОРЯЖЕНИИ ДОКУМЕНТАЦИЕЙ, А ТОЧНЕЕ HELPом не был предусмотрен. За просвещение - спасибо. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 07.04.2003, 10:43 | 
  
  
  
   | 
||
| 
 
Манипуляции таблицами SQL из VisualFoxPro 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Попробуй вместо  sqlexec(ncnnct,"insert into DATARESU (id_usr,vid) ; select a.id_usr,b.vid ; from bankr a, unit b ; where a.id_usr=b.id_usr ; and (b.vid=131 or b.vid=181 or b.vid=585 or b.vid=591) ; and b.dat_stop=?perem3") написать sqlexec(ncnnct,"insert into DATARESU (id_usr,vid) ; select a.id_usr,b.vid ; from bankr a, unit b ; where a.id_usr=b.id_usr ; and (b.vid=131 or b.vid=181 or b.vid=585 or b.vid=591) ; and b.dat_stop=''" + DTOC (perem3, 1) + "''") ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 11.04.2003, 10:00 | 
  
  
  
   | 
||
| 
 | 

start [/forum/topic.php?fid=41&msg=32133903&tid=1598357]:  | 
    0ms | 
get settings:  | 
    11ms | 
get forum list:  | 
    13ms | 
check forum access:  | 
    3ms | 
check topic access:  | 
    3ms | 
track hit:  | 
    62ms | 
get topic data:  | 
    10ms | 
get forum data:  | 
    3ms | 
get page messages:  | 
    45ms | 
get tp. blocked users:  | 
    1ms | 
| others: | 235ms | 
| total: | 386ms | 

| 0 / 0 | 

    Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
    
    
    «На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
    
    
    ... ля, ля, ля ...