|
Манипуляции таблицами 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=32133507&tid=1598357]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 146ms |
0 / 0 |